|
타이머를 이용하여 클라이언트로 매 1초마다 데이터 100개를 보내는 프로그램이었습니다.
첨에는 클라이언트의 접속을 끊었을때 인덱스 에러가 나왔었구요. 여기 여러 고수분들의 조언으로
그것은 해결했습니다만...클라이언트를 끊었을때 서버에서 가끔 아래와 같은 에러를 만납니다.
""ESocketError with message 'Asynchronous socket error 10053'""
원인으로는 제 생각에 클라이언트가 그것을 다 받기 전에 접속을 끊었을때 나는
에러가 아닐까요??? 아니면 서버가 클라이언트로 100개를 다 보내야 하는데 50개만 보냈을때 클라이언트가
죽어서 보낼곳을 잃어버려서 그런게 아닐까요? 같은 말인가??
암튼 제가 알고싶은건 해결방법을 알면 좋겠구요. 아니라면 클라 접속이 끊어졌을때 데이터 보내는것을 중단할수 있는 방법을 알고싶습니다.
해결방법이 모가 있을까요??? 여러 고수님들의 조언 부탁드립니다.
사용한 소켓이벤트입니다.
void __fastcall TRMSServerForm::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
SendPacketTimer->Enabled = true;
}
void __fastcall TRMSServerForm::ServerSocket1ClientDisconnect(
TObject *Sender, TCustomWinSocket *Socket)
{
SendPacketTimer->Enabled = false;
}
void __fastcall TRMSServerForm::SendPacketTimerTimer(TObject *Sender)
{
//SendBuffer[100];
for(int i=0; i<SocketCount; i++)
{
ServerSocket1->Socket->Connections[i]->SendBuf(SendBuffer,Socketcount);
}
}
|