|
홍지곤 님이 쓰신 글 :
: 고영문 님이 쓰신 글 :
: : 타이머로 계속해서 클라이언트로 값을 보내는데 클라이언트를 죽이면 인덱스 에러가 나오네요. 아마두 클라
: :
: : 이언트가 죽었을때 보내지 말라는 명령을 해야 할거 같은데 어떻게 클라이언트가 죽는걸 알수 있죠?
: :
: :
: : *****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가
:
: 죽었는지 죽지 않았는지 체크하는 수밖에는 없을 것 같구요.. 이건 제 생각이니
:
: 참고만 하세여~~
:
: 아참! 위에 소스를 잠깐 보니까 일반 소켓 컴포넌트를 이용한 것 같은데..
:
: 이걸로 하면 소켓 에러쪽에서 체크 할 수 있는 것 아닌가요?
:
: 조금이라도 도움이 되었으면 하네요^^*
:
: 초보라서 답변하기 좀 그러네여~~~
:
: 그럼..즐프하세요~
넵..감솨함다..님의 충고로 아래와 같이 고쳤더니 그런 에러는 없어졌습니다. 정말 감사함니다.
그런데 가끔씩 또다른 에러가 나오네요.
그 에러가 모냐면..
ESocketError with message 'Asynchronous socket error 10053'
원인으로는 아마도
서버에서 클라이언트로 데이터를 1초마다 100개씩 보낸다고 했을때 클라이언트가 그것을
다 받기 전에 접속을 끊었을때 나는 에러가 아닐까요???ㅠ.ㅠ
해결방법이 모가 있을까요???
|