|
접속이 이루어져 있는 컴 전원이 나가버리거나 라인이 죽거나 하는 경우를
알아내는건 불가능 합니다.
나우누리나 하이텔등을 telnet 모드로 사용해보셨다면 일정시간내에
아무런 메세지를 보내주지 않어면 서버에서 짤라버리는것을 보셨을 겁니다.
그래서 telnet어플에 보면 접속유지멘트 같은게 있죠.
이런 식으로 예를 들면 서버가 클라이언트로부터 메세지를 받으면
접속유지 시간을 연장시켜 주는 방법이 있습니다.
예를 들어 5분이라면 5분동안 클라이언트로부터 아무런 메세지를 받지 못했다면
접속이 끊긴상태로 보고 짤라버리는거죠.
그리고 3분 정도 부터 일정 간격으로 클라이언트에 에코메세지를 보내서
클라이언트가 그에 대한 응답을 하게 하는것도 방법입니다.
권선미 님이 쓰신 글 :
: 소켓의 상태 감시를 어떻게 해야하나요..
: Blocking의 경우 request를 하구 response가 올때까지 블러킹이 되잖아요.
: 근데 만약 서버 프로세스가 죽어버리면
: 클라이언트 프로세스는 다시 request를 보내기전까진
: 소켓이 끊어졌는지... 아닌지.. 상태 체크가 안되더라구요..
:
: 타이머를 써서 5초에 한번씩 체크를 하고록
:
: if (socket_name->Active)
: return;
: else {
: Showmessage("Disconnect");
: opensocket(); -----------> 소켓의 ip, port등을 다시 셋팅하는 것
: }
:
: 이렇게 해서 테스트를 해보니까..
: 서버 프로세스가 죽었는데도...
: 게속 if문에서 socket-name->Active상태로 체크가 되더라구요..
:
: 소켓의 상태감시하는데..
: 스레드를 사용 하시는 분이 있다고 들었는데..
: 어떻게 하는 건가여?
:
: 정말 급한 문제거든여..
: 좀 갈켜 주세요....!!!!
|