7.4.7 EH 메신저 상태 라이브러리 설계 및 구현 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

이번에는 상태 라이브러리를 설계 및 구현합시다.

상태 라이브러리에는 상태를 유지하기 위해 주기적으로 보내는 KeepAlive와 다른 계정의 정보를 전송 및 수신하는 OtherUserInfo를 정의할 것입니다. 상태 라이브러리는 클라이언트와 상태 서버에서 사용합니다.

클라이언트의 Peer 프로그램과 상태 서버의 LogSVC는 상태 라이브러리와 EHPacket 라이브러리를 사용합니다. 그리고 상태 라이브러리도 EHPacket 라이브러리를 사용합니다.

[그림 7.17] 상태 관련 노드 컴포넌트 다이어그램
[그림 7.17] 상태 관련 노드 컴포넌트 다이어그램
 이제 상태 라이브러리를 작성합시다. 상태 라이브러리는 StsLib 이름으로 만들게요. 상태 라이브러리에는 상태를 유지하기 위해 주기적으로 보내는 KeepAlive 클래스와 다른 계정의 정보에 관한 OtherUserInfo 클래스로 구성할게요.

먼저 EH 메신저 솔루션에 StsLib 이름으로 Win2 프로젝트를 추가하고 DLL 형태로 만드세요.

작성 원리는 로그 라이브러리 작성 원리와 같습니다.

상태 라이브러리에서 공통으로 포함해서 사용할 Sts.h 파일을 Common 프로젝트에 추가합니다.

EHPacketLib를 사용해야 하므로 EHPacket.h 파일을 포함하고 EHPacketLib 파일을 참조 추가합니다.

상태 라이브러리 내부와 사용할 곳에 맞게 __declspec 표현을 할 수 있게 매크로 STS_DLL를 정의합니다.

상태 유지를 위해 주기적으로 보내는 KeepAlive에 관한 클래스를 정의할 KeepAlive.h 파일을 Common 프로젝트에 추가합니다. 작성 방법은 LogInReq.h 파일 같은 방법이므로 작성합니다. 코드 설명은 생략할게요.

StsLib 프로젝트에 KeepAlive.cpp 파일을 추가하고 구현합시다. 구현 방법은 이전과 같으므로 코드 설명은 생략할게요.

이번에는 Common 프로젝트에 OtherUserInfo.h 파일을 추가하고 StsLib 프로젝트에 OtherUserInfo.cpp 파일을 추가하고 구현하세요. 앞에서 계속 만들었던 방법과 같습니다. 코드 설명은 생략할게요.