안녕하세요?
막막해서..
통신프로그램을 짰는데요.
24시간 돌아가는 프로그램 입니다.
계속 데이터를 올리는 프로그램이라
Connect / Disconnect 가 자주 일어 납니다.( 수시로.. 통상 2분)
델파이에있는 Clientsock / Indy idTCPClient 둘다 이용해 봤는데요.
이상한 현상이 일어나서. 또..
제가 사용한 방법이 잘못 되었는지 해서요.
그리고 전송 루틴은 쓰레드 안에 들어 있습니다.
1. 우선 이상한현상
이 프로그램이 24시간 돌아가는 도중에 계속 Connect/Disconnect가
일어나는데. 네트워크가 장애가 일어나지 않는 지역은 괜찮은거 같습니다.
첫번째 일정한 시간이 지나면(하루? 이틀)
indy/clientsock에서 connect; 하면 disconnect 이벤트가 바로
떨어집니다. 연결할려는 ServerIP와 App는 살아 있구요.
두번째는 일정시간이 지나면
패킷을 보내지 못하거나 혹은 받지 못하는 거 같습니다.
세번째는 netstat -a 해서 보면
ESTABLISH가 복수개 생기는 현상이 있습니다.
(아마 첫번째나 두번째의 원인이 아닌가 생각중입니다.)
위에 세가지 현상은 네트워크 장애(접속끊김)현상이 없는 곳
(제가 원인을 잘못 파악을 했는지도 모르겠습니다. 환경이 틀린것은
이것뿐이라... 원거리 거든요. )에서는 일어나지 않습니다.
또 추가적으로요..
PC에서 LISTENING 포트가 늘어 날수 있는 원이 이 어떻게 되는지도
궁금합니다. 제가 알고 있기론 서버소켓을 바인딩할때 나는 걸로
아는데 클라이언트 소켓을 잘못 사용했을때도 나는지요?
아참 그리고 인디/델파이소켓 둘다 Disconnect 했을때
연결된 세션이 Time_wait 로 들어가서 Close 되는데.
이렇게 되는 이유도 궁금합니다.
제가 Establish 중복 현상을 없얘기 위해서 에러시 소켓을
강제로 끊었는데.. 그렇게 해도 나중에 전송을 못하는 현상이
다시 나오는거 같습니다.
그럼..
아시는 분의 소중한 답변 부탁 드립니다.
.. ㅠ.ㅠ
답답해라...