반응형 Boost29 [Network] 18. FlatBuffers + Asio MFC 채팅 소스코드 FlatBuffers + ASIO MFC 채팅 서버 클라이언트 예제 전체 소스코드 입니다. Visual Studio 2022 버전으로 작성되었습니다. 2022. 2. 21. [Network] 17. FlatBuffers + Asio MFC 채팅 클라이언트 (4) CClientSocket 클래스 구성을 알아보겠습니다. 서버측에서 사용되는 CChatServer 클래스와 핑퐁 구조로 작동되며 서버와 클라이언트 연결의 메인이 되는 소켓 통신 클래스입니다. CChatServer 클래스와 같이 Flatbuffers 를 사용하여 vector schema를 통해 직렬화하여 전송합니다. MFC에서 제공하는 기본 CSocket 클래스를 상속받아 제작하였습니다. ChatClient.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #pragma once #include class CClientSocket : public CSocket { public: CClientSocket(); ~CClientSocket(); public:.. 2022. 2. 21. [Network] 16. FlatBuffers + Asio MFC 채팅 클라이언트 (3) 메인 채팅 화면 소스코드를 작성합니다. MFCChatClientDlg.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 // MFCChatClientDlg.h: 헤더 파일 // #include "ChatClient.h" #pragma once // CMFCChatClientDlg 대화 상자 class CMFCChatClientDlg : public CDialogEx { // 생성입니다. public: CMFCChatClientDlg(CWnd* pParent = nullp.. 2022. 2. 21. [Network] 15. FlatBuffers + Asio MFC 채팅 클라이언트 (2) 이전에서 구성한 ConnectDlg 다이얼로그 클래스 소스 코드를 작성하겠습니다. 각각 리소스 변수를 생성하고 변수에 입력된 값을 저장하는 클래스 입니다. ConnectDlg.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #pragma once // ConnectDlg 대화 상자 class ConnectDlg : public CDialogEx { DECLARE_DYNAMIC(ConnectDlg) public: ConnectDlg(CWnd* pParent = nullptr); // 표준 생성자입니다. virtual ~ConnectD.. 2022. 2. 21. [Network] 14. FlatBuffers + Asio MFC 채팅 클라이언트 (1) 1. 접속 연결 GUI 구성 먼저 서버 접속 연결을 위한 간단한 화면 구성을 만들어 봅니다. 여기서는 접속할 서버의 주소를 넣는 IP ADDRESS 도구상자와 포트입력, 그리고 채팅에 쓰일 닉네임을 받는 것만 만들었습니다. 위와 같이 Dialog 리소스를 추가하고 오른쪽과 같이 대화상자를 만들어줍니다. 다이얼로그 이름은 IDD_DIALOG_CONNECT 로 설정하고 ConnectDlg 클래스로 만들어줍시다. 2. 채팅 메인 GUI 구성 채팅 화면을 구성하는 디자인으로 메인 채팅화면과 채팅입력란, 그리고 우측 접속자 목록으로 만들어주겠습니다. 프로젝트 생성시에 만들어지는 메인 다이얼로그에 디자인하고 화면을 구성합니다. 3. 구동 화면 미리 보기 1) 먼저 서버를 실행하여 접속자를 대기합니다. 2) 클라이언.. 2022. 2. 21. [Network] 13. FlatBuffers + Asio MFC 채팅 서버 소스 콘솔 채팅 프로그램 소스에서 약간 변경된 부분은 CChatServer 클래스 입니다. 가장 중요한 코드 부분은 콘솔모드와는 달리 GUI 모드는 채팅방에 들어와 있는 모든 유저를 받아오는 코드가 필요해서 USER_LIST 부분의 패킷을 추가하였습니다. 채팅방을 접속하면 나의 접속을 알려주며 다시 접속된 채팅방에 있는 모든 유저목록을 받아와서 클라이언트 MFC 채팅 프로그램에 보여주는 식으로 작동됩니다. Flatbuffers 에서는 유저 목록 전송을 간단히 하기 위해서 vector schema를 사용할 수 있습니다. 모든 유저 이름을 벡터 컨테이너로 만들어서 CreateVectorOfString() 함수를 통해서 vector schema로 직렬화합니다. CChatServer.h #pragma once #in.. 2021. 10. 5. 이전 1 2 3 4 5 다음 반응형