Q&A

  • tidtcpserver(인디TCP서버)에서 Exception질문 드립니다.
tidtcpserver의 OnExecute메시지를 처리하여 클라이언트와 데이터를 주고 받는 것을 알겠는데, 프로그램 종료시에 Exception이 발생합니다.

OnExecute에서 매개변수로 들어오는 AThread: TIdPeerThread을 사용해서 ReadLn을 다음과 같이 했습니다.

str := AThread.Connection.ReadLn();

인디 TCP서버는 ReadLn하는 부분이 없으면 계속 OnExecute이벤트가 발생하던데 이것을 ReadLn함수로 해결하는 것 같더군요. 아마도 ReadLn함수에서 데이터가 받아 질때까지 기다리기 때문인 것 같던데요.

프로그램 종료를 하면 위의 ReadLn부분에서 Exception이 발생합니다.
즉 ReadLn에서는 새로운 데이터를 읽으려하지만 프로그램을 종료하려니 예외가 나오는 것 같습니다.

이 Exception을 어떻게 해결 할 수 있나요?

그리도 또 하나...

Delphi샘플의 인디TCP서버 소스를 보니 OnExecute에서 AThread.Connection.Disconnect를 하던데, 원래 OnExecute에서 Disconnect를 해야 하는지요? 참고로 Disconnect를 하면 위의 Exception이 발생하지 않더군요.

그리고 마지막으로 하나 더...
Visual C++의 CWinsock에서는 m_hSocket을 INVALID_SOCKET과 검사해서 같으면 Close한 후라고 여기는데 델파이에서는 현재 소켓이 살아있는지 아닌지를 어떻게 알아내는가요?

질문을 제대로 했는 지 모르겠네요..

고수님의 답변을 기다립니다.
0  COMMENTS