윈속에 KEEP_ALIVE 기능을 활성화 시키시면 됩니다.
http://msdn.microsoft.com/en-us/library/ee470551(v=VS.85).aspx
그러나 더욱 좋은 방법은 일정 시간 간격으로 직접 KEEP_ALIVE 메시지를 전달하시는 겁니다.
네트워크 단절을 바로 확인하려면 직접 KEEP_ALIVE를 구현하는 것 이외에는 별다른 방법이 없습니다.
네트워크 데이터 송,수신 중에 랜선을 뽑아보세요.
그러면 네트워크 연결은 Connection Timeout이 될 때까지 기다리고, 전송은 소켓 버퍼가 꽉 찰 때까지
정상 메시지를 리턴하게 됩니다.
직접 KEEP_ALIVE를 구현함으로써 네트워크 Timeout이 되기 전까지는 연결이 단절 되었다는
사실을 알 수가 없는 맹점을 극복하자는거죠.
김 수연 님이 쓰신 글 :
: 안녕하세요~
:
: 요즘에 TCP/IP Client 를 만들어서 소켓 통신 을 하고 있는데
:
: 소켓 사용 중 한 30분 정도 동안 아무것도 안하게 되면
:
: 종료가 되버리네요. ;;
:
: 에러코드는 10060 이렇게 날라오는데 이 코드는 서버에 응답이 없거나 Timeout 이 걸렸을 때 현상이라던데
:
: 여기서 Client Timeout 설정 하는 방법엔 어떤게 있나요??
|