|
고영문 님이 쓰신 글 :
: 타이머로 계속해서 클라이언트로 값을 보내는데 클라이언트를 죽이면 인덱스 에러가 나오네요. 아마두 클라
:
: 이언트가 죽었을때 보내지 말라는 명령을 해야 할거 같은데 어떻게 클라이언트가 죽는걸 알수 있죠?
:
:
: *****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;
: }
:
//-------------------------------------------------------------------------------
안녕하세요! Magic.홍지곤 입니다.
그냥 참고만 하세요!
Clinet 를 죽일때 Server쪽으로 죽었다는 Packet을 날리면 될 것 같은데요..
Server쪽에서는 이 Packet을 받아 Clinet쪽으로 보내지 않으면 될 것 같습니다.
정상적으로 Client를 죽였을때 입니다.
Client에서 Server야 나죽었다 이러면 Server에서는 너 죽었냐..그럼 데이터 보내지
않을께....이런식이 아닐까 생각합니다..
강제로 Clinet를 죽였을시에는 Server쪽에서 일정시간이나 머 이런것으로 Clinet가
죽었는지 죽지 않았는지 체크하는 수밖에는 없을 것 같구요.. 이건 제 생각이니
참고만 하세여~~
아참! 위에 소스를 잠깐 보니까 일반 소켓 컴포넌트를 이용한 것 같은데..
이걸로 하면 소켓 에러쪽에서 체크 할 수 있는 것 아닌가요?
조금이라도 도움이 되었으면 하네요^^*
초보라서 답변하기 좀 그러네여~~~
그럼..즐프하세요~
|