|
통신프로그램에서
연결이 되었다~ -> 이벤트 있음.
연결이 끊어졌다. -> 이벤트 있음.
연결중이다. -> 이벤트 없음
이벤트가 없으므로 프로그래머가 만들어 줘야 합니다.
주기적인 데이터흐름을 만들어서 데이터가 올라오지 않으면
연결이 끊어진 것으로 간주해서 적절한 처리(소켓 쓰레드 제거)를 해줘야 합니다.
서버나 클라이언트 전원이 갑자기 꺼져버릴수도 있는 처리에서는 더욱이 그렇죠.
즐프하세요.
newhuni 님이 쓰신 글 :
: 서버 프로그램을 실행시키고 클라이언트 프로그램을 실행시키면
: 두 프로그램은 정상적으로 잘 동작됩니다.
:
: 그런데... 클라이언트 프로그램이 강제종료되면 서버프로그램의 메모리가
: 계속 증가하고 CPU점유율도 99퍼센트까지 올라갑니다.
:
: 디버깅을 해 보면 클라이언트가 강제종료되도 해당 쓰레드가 남아있습니다.
: 그리고 IdTCPServerDisconnect(..)이벤트도 발생하지 않습니다.
:
: 정상적으로는 클라이언트가 서버에게 종료 하겠다는 메시지를 발생시키고,
: 서버에서 Disconnect를 해야 하는 것으로 아는데...
: 이 프로그램에서는 따로 종료버튼이 존재하지 않고. 종료하기 위해선 강제종료밖에
: 할 수 없습니다. (24시간 365일 돌아야 하는 프로그램이라서요...)
:
: 시스템의 메모리양만큼 증가하다 나중에는 가상메모리가 없다고 메시지가 발생하네요...
:
:
:
: 클라이언트 프로그램이 강제종료되었을 때 서버에서는 어떻게 대응을 해야 할까요??
|