1. 소개
FlatBuffers 와 Boost Asio 를 활용하여 서버와 클라이언트 채팅 서버 예제를 작성하도록 해보겠습니다.
UI의 경우 콘솔방식으로 작성되며, 되도록 초보자가 이해하기 쉽도록 코드로 구성합니다. 코루틴같은 복잡한 코드는 작성하지 않도록 하였습니다.
추후 flatbuffers를 활용하여 UI가 있는 일반적인 메신저 서버와 클라이언트를 만들어보는 예제로 진행할 예정입니다.
본 예제는 Boost Asio에 대한 상세 설명은 포함하지 않습니다. flatbuffers를 활용하는 예제로서 flatbuffers의 중점에 맞춰서 진행됩니다.
2. 서버 구조
간단히 채팅 서버 클라이언트의 패킷 프로토콜 구조는 간단하게 아래와 같이 구성하였습니다.
각각의 서버와 클라이언트 코드 구조는 아래와 같이 구성됩니다.
3. 참고 예제
기본적인 boost asio server / client 소스코드는 boost 문서의 cpp11 예제코드를 사용하였으며, 그 링크는 아래와 같습니다.
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/examples/cpp11_examples.html
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/example/cpp11/chat/chat_server.cpp
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/example/cpp11/chat/chat_message.hpp
4. Nuget 을 활용한 Boost Asio 라이브러리 설치하기
Nuget 활용방법은 다음 글을 참고하시기 바랍니다.
nuget 관리자를 활용한 boost 시작하기
Nuget에서 설치가 필요한 라이브러리는 아래와 같습니다.
라이브러리 | 버전 |
boost | 1.76.0.0 |
boost_chrono-vc142 | 1.76.0.0 |
boost_date_time-vc142 | 1.76.0.0 |
boost_thread-vc142 | 1.76.0.0 |
설치를 해주면 packages.config 파일에는 다음과 같이 만들어집니다.
packages.config
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="boost" version="1.76.0.0" targetFramework="native" /> <package id="boost_chrono-vc142" version="1.76.0.0" targetFramework="native" /> <package id="boost_date_time-vc142" version="1.76.0.0" targetFramework="native" /> <package id="boost_thread-vc142" version="1.76.0.0" targetFramework="native" /> </packages> |
'프로그래밍 언어 > Flatbuffers' 카테고리의 다른 글
[Network] 6. FlatBuffers + Boost Asio 콘솔 서버 예제 (2) (0) | 2021.07.05 |
---|---|
[Network] 5. FlatBuffers + Boost Asio 콘솔 서버 예제 (1) (0) | 2021.07.04 |
[Network] 3. FlatBuffers 사용 예제 코드 (0) | 2021.05.28 |
[Network] 2. FlatBuffers 사용하기 (2) | 2021.05.28 |
[Network] 1. FlatBuffers 소개 (0) | 2021.05.28 |