서버와 클라이언트가 연결된 상태에서 클라이언트가 socket API로 접속을 끊던가 또는 클라이언트 프로그램이 종료하면 서버는 즉시 클라이언트의 접속 해제를 감지할 수 있습니다. 그러나 클라이언트가 특수한 상황에 빠졌던가 또는 클라이언트가 인터넷 선을 뺀 경우 일정 시간이 지날 때까지 서버에서는 접속이 끊어진 것을 감지할 수 없습니다.

이런 경우 socket API 옵션의 ‘KeepAlive’를 사용할 수도 있지만 대부분 서버와 클라이언트간에 주기적으로 패킷을 주고 받으면서 연결이 제대로 되어 있는지 확인을 합니다. 보통 이런 기능을 ‘HeartBeat’ 기능이라고 부릅니다.

 

HalfNetwork‘HeartBeat’와 같은 기능을 하는 것이 추가 되었습니다.

TestServer의 코드를 보면 서버의 환경 설정에서 config.ZombieConnectionTerm 라는 것을 볼 수 있습니다. 이것은 ZombieConnectionTerm에 설정한 시간까지 클라이언트가 패킷을 보낸 적이 없으면 접속을 끊어버립니다.

ZombieConnectionTerm의 값은 밀리세컨드 단위를 사용합니다. 그리고 0을 설정하면 사용하지 않은 것으로 설정됩니다.

 

 

저작자 표시
신고
by 흥배 2010.06.21 08:30
| 1 |