|
IdTCPClient1->Connect(); 를 사용하여 서버와의 연결을 시킵니다.
그리고 메시지를 서로 주고 받은 뒤, 클라이언트에서 접속을 끓으려고
IdTCPClient1->Disconnect()를 실행하면 Server측에서 에러가 발생합니다.
Server의 OnExecute함수에서 에러가 발생합니다.
어떻게 해야 안전하게 접속을 끊을 수 있을까요???
void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread)
{
AnsiString strReceive;
AnsiString strCommand;
strReceive = AThread->Connection->ReadLn(EOL,5000); <-- 요부분.
if(strReceive == "") return;
.
.
.
}
그리고 접속중에 클라이언트를 그냥 종료시키면 Server에서 응답없음.. 이 됩니다.
아마도 블로킹방식이라서 계속 메시지를 기다리는 것 때문에 그런 것 같은데...
ReadLn에서 TimeOut을 지정하면 계속 기다리지 않지.. 않나요???
TimeOut에 5000을 넣으면 5초간 기다리고 응답없으면... 넘어가는거 아닌가요??
현재 사용하는 인디버전은 9.0.18을 사용합니다.
조언부탁드립니다...
|