|
안녕하세요.
꼼지락.수야입니다.
에공.. ^^;; 컴포넌트는 안써봐서 잘은 모르지만 어차피 똑같으리라 생각하고 말씀드릴께요
클라이언트로 보낼때 클라이언트가 죽으면 인덱스에러가 난다구요
앞에서 홍지곤님이 말씀하신것처럼 클라이언트가 죽을때 " 나 죽어요~ "해주면 좋을일이지만
접속종료 안하고 그냥 랜선을 빼버린 경우를 생각해본다면 ㅡㅡ? 그건 안되죠
지금 후다닥 뒤져봤는데 TServerSocket에 이벤트중에 OnClientDisconnect 이벤트가 있네요
이곳에서 제어를 해주면 될것같은데요? 아니면 OnClientError 이벤트에서 제어를 해주면 될것같네요
TTimer를 종료하는 멧시지를 넣어주면 될것같은데
대답이 허접했나요? 제 한계라.. 죄송..
수야여씀미돵~
고영문 님이 쓰신 글 :
: 타이머로 계속해서 클라이언트로 값을 보내는데 클라이언트를 죽이면 인덱스 에러가 나오네요. 아마두 클라
:
: 이언트가 죽었을때 보내지 말라는 명령을 해야 할거 같은데 어떻게 클라이언트가 죽는걸 알수 있죠?
:
:
: *****Server*******
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
: temp=0;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
: TCustomWinSocket *Socket)
: {
: receivePacket = Socket->ReceiveText();
: Edit2->Text = receivePacket;
: Socket->SendText(Edit2->Text);
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: Timer1->Enabled = true;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
: temp++; // Time Interval = 200;
: Edit1->Text = temp;//sendPacket;
: ServerSocket1->Socket->Connections[0]->SendText(temp);//sendPacket);
: }
: //---------------------------------------------------------------------------
:
:
: *********Client*****************
: void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
: TCustomWinSocket *Socket)
: {
: AnsiString str1;
: str1 = Socket->ReceiveText();
:
: Edit2->Text = str1;
: }
:
|