7.3.7 EH 메신저 KeepAlive 시퀀스 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

Peer는 로긴을 성공하면 주기적으로 KeepAlive로 보내어 STS_LOGGED 상태를 유지합니다. 로긴을 성공한 이후에 다른 계정 정보를 수신하기 위한 소켓과 숏 메시지를 수신하기 위한 소켓, 파일을 수신하기 위한 소켓을 네트워크 인터페이스와 결합한 이후에 이들 정보와 자신의 IP  정보를 KeepAlive에 실어 보냅니다. 이 후에 보내는 KeepAlive에는 포트들의 정보를 0으로 보내기로 합시다.

StsSVC에서는 KeepAlive 메시지를 수신하였을 때 포트 정보로 처음 수신한 것인지 확인합니다. 처음 수신하였다면 DbmSVC에게 STS_LOGGED 상태로 변경할 것을 요청합니다. 그리고 StsSVC는 전달받은 계정의 정보를 자료구조에 보관합니다. 또한 이미 로긴한 Peer에게 새로 로긴한 계정의 정보를 전달하고 새로 로긴한 계정의 Peer에게 이미 로긴한 계정의 정보를 전송합니다(로긴 정보 전송 시퀀스 참고).

[그림 7.9] KeepAlive 시퀀스 다이어그램

다음은 Keep Alive 시퀀스에서 사용하는 메시지입니다.

번호메시지인자 리스트채널번호설명
1, 2KeepAliveid, ip, stsport,smsgport,fileport1, 4STS_LOGGED 상태 유지(아이디)
3ChangeStsid, STS_LOGGED5상태 변경 요청(아이디, 상태:STS_LOGGED)