7.5.3 EH 메신저 – LogSVC 구현 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

LogSVC를 구현합시다. EH 메신저 솔루션에 LogSVC 이름의 콘솔 응용 프로젝트를 만드세요. 그리고 이 책에서는 LogSVC를 구현한 이후에 테스트 프로젝트를 만들고 테스트하는 부분은 다루지 않을게요.

LogSVC 프로젝트에 Program.cpp 파일을 추가하여 소스를 구현합시다.

진입점 main 함수에서는 윈속 초기화 후에 로그 서버를 가동하고 윈속을 해제화합니다.

로그 서버에서는 로긴 요청과 로그 아웃 요청 메시지를 처리합니다.

로긴 요청 메시지 처리 함수를 작성합시다.

수신한 메시지를 로긴 요청 메시지로 변환합니다.

Dbm 서비스에 연결하여 아이디 존재 확인 요청 메시지를 전송합니다.

Dbm 서비스로부터 응답 메시지를 수신합니다.

수신한 메시지가 아이디 존재  확인 응답 메시지가 아니면 오류입니다.

아이디 존재 확인 응답 메시지로 변환합니다.

만약 아이디 존재하지 않으면 로긴 결과로 아이디 존재하지 않음을 설정합니다.

아이디가 존재하면 다음 처리를 합니다.

Dbm 서비스에 연결하여 상태 확인 요청 메시지를 전송합니다.

Dbm 서비스로부터 응답 메시지를 수신합니다.

만약 수신한 메시지가 상태 확인 응답 메시지가 아니면 오류입니다.

수신한 메시지를 상태 확인 응답 메시지로 변환합니다.

만약 결과가 STS_REG가 아니라면 이미 로긴 중이거나 로긴 상태입니다.

그렇지 않으면  Dbm 서비스에 연결하여 패스워드 일치 확인 메시지를 전송합니다.

Dbm 서비스로부터 응답 메시지를 수신합니다.

만약 수신한 메시지가 패스워드 일치 확인 요청 응답 메시지가 아니면 오류입니다.

수신한 메시지를 패스워드 일치 확인 요청 응답 메시지로 변환합니다.

일치하지 않으면 결과를 변경합니다.

수신한 소켓으로 로긴 요청 결과 메시지를 전송합니다.

로그 아웃 요청 메시지 처리 함수를 작성합시다.

로그 아웃 요청 메시지를 수신하면 Log 서비스는 Dbm 서비스에 연결하여 상태 변경 요청 메시지를 전송합니다. 이 때 상태는 로긴 중(STS_LOGGING)을 전달합니다.