2011-03-24 8 views
1

내 응용 프로그램은 TidTCPClient를 사용하여 서버에 데이터를 보냅니다. 서버는 TidTCPServer를 사용합니다. 모든 것이 잘 작동하며 예기치 않은 상황을 처리하려고합니다.즉시 TCPClient를 종료 할 수 있습니까?

TCPClient.IOHandler.InputBuffer.Clear; 
TCPClient.Disconnect; 
TCPClient.Free; 

TCPClient.Free 장소 곳입니다 :

내가 마지막으로 종료 될 때까지 오랜 시간을 기다립니다, 클라이언트를 닫으려고 다음 서버와 클라이언트 사이의 네트워크 케이블을 분리 한

기다려. 이것은 때로는 30 초이며 때로는 더 오래 걸리는 경우도 있습니다.

그 순간에 TCPClient를 즉시 종료 할 수 있습니까?

답변

1

Disconnect()을 호출 한 후에 InputBuffer을 지우려면 그 전에 사용하지 않아야합니다.

어떤 경우에도 소켓의 LINGER 옵션을 사용하지 않는 한 TIdTCPClient의 연결을 해제하거나 해제 할 때 소켓이 이러한 중단을 야기 할 이유가 없습니다. 그래서 나는 자신의 코드가 처음에는 잘못이라고 의심해야합니다. 인디의 어떤 버전을 사용하고 있습니까? TIdTCPClient에 할당 된 이벤트 처리기가 있습니까? 디버거에서 TIdTCPClient의 소멸자를 통해 실제 진행 상황을 확인해 보았습니까?

0

아마도 시간이 초과 될 때까지 기다립니다. 구성 요소의 속성을보고 시간 초과 값을 낮추십시오.

+1

연결 끊기 시간 제한이 없습니다. –

관련 문제