C++ 오픈소스 서버 라이브러리

sniper00/moon

  • 저장소: https://github.com/sniper00/moon
  • A cross-platform,lightweight,scalable game server framework written in C++, and support Lua Script
  • Boost.Asio와 Lua를 기반으로 만든 게임 서버 프레임워크

libuv_cpp11

  • 저장소: https://github.com/wlgq2/libuv_cpp11
  • libuv를 Modern C++로 랩핑한 라이브러리

uvw

  • 저장소: https://github.com/skypjack/uvw
  • libuv를 Modern C++로 랩핑한 라이브러리
  • TODO
    • VC 프로젝트 만들기
    • libuv와 연결 시켜 줘야 한다

znet

  • 저장소 url: https://github.com/starwing/znet
  • 개발에 사용해도 좋을 듯.
  • TCP, UDP
  • IOCP, epoll 사용.
  • lua를 지원한다.
  • C/C++ 언어로 만들어져 있다.
  • 네트워크 기능은 znet.h, znet.hpp에 모두 구현 되어 있다. znet만 C++로 만들어져 있다
  • 코드 분석 난이도(1 제일 쉬움, 10 제일 어려움): 6
    • C++ 학습용으로 좋을 듯

zsummerX

  • 저장소 utl: https://github.com/zsummer/zsummerX
  • IOCP/EPOLL/SELECT
  • C++ 언어로 만들어져 있다

brynet

  • https://github.com/IronsDu/brynet
  • IOCP, epoll
  • 분석하기.
  • 불 필요한 기능 제거하기.
  • 성능 및 안정성 테스트.

uWebSockets

  • 저장소 url: https://github.com/uNetworking/uSockets
    • uWebSockets https://github.com/uNetworking/uWebSockets
  • Linux만 지원한다.

handy

  • 저장소: https://github.com/yedf/handy
  • Linux만 지원한다.

cloudwu/socket-server

  • 저장소 url: https://github.com/cloudwu/socket-server
  • Linux만 지원한다.
  • 중국의 MMORPG ‘몽환서유’ 개발자인 cloudwu씨가 만든 서버 코드
  • tcp/udp
  • epool과 kqueue 사용.
  • C 언어로 만듬.

파일 구성

  • 간단하게 구성되어 있다.
  • 5개의 파일로 이중 하나는 테스트 코드 파일이다. | 파일 | 설명 | |—————–|——| | socket_poll.h | epoll과 kqueue 사용할 선택하기 위한 헤더 파일 | | socket_epoll.h | socket의 epoll 정의. 레벨 트리거 사용 | | socket_kqueue.h | socket의 kqueue 정의. bsd 계열에서 사용 | | socket_server.h | 서버 네트워크 함수와 구조체 선언 | | socket_server.c | 서버 네트워크 함수와 구조체 정의 | | test.c | socket_server을 사용한 테스트 프로그램 |

Skynet2

  • 저장소 url: https://github.com/cloudwu/skynet2
  • 중국의 MMORPG ‘몽환서유’ 개발자인 cloudwu씨가 만든 서버 코드로 ‘몽환서유’의 기본 코드의 버전 2.
    • 넷이즈에서 아직도 사용 중이라고 함.
  • TCP
  • epoll
  • C로 만들어져 있다.
  • Skynet 설계 설명
  • https://github.com/cloudwu/skynet
  • https://github.com/cloudwu/skynet_sample

fflib_net

  • https://github.com/fanchy/fflib 에서 네트워크 부분만 분리.
    • 이 프로젝트는 rpc 통신을 목적으로 하고 있음.

jubatus-mpio

  • 저장소 https://github.com/jubatus/jubatus-mpio
  • 관련 글 http://frsyuki.hatenablog.com/entry/20100412/p1

이 글은 2020-03-12에 작성되었습니다.