闲着没事干写的网络库,基于Asio开发,支持TCP和KCP。功能很原始。
- 参考资料
- https://github.com/libinzhangyuan/asio_kcp
- https://pkg.go.dev/github.com/xtaci/kcp-go
- https://luyuhuang.tech/2020/12/09/kcp.html
- https://www.boost.org/doc/libs/1_84_0/doc/html/boost_asio/reference/ip__tcp/socket.html
- 设计原则
- 代码是给人看的,因此均使用简单的模板实现
- 尽量使用面向对象编程,因此Handler被约定成仿函数
期待你的出宝贵建议~
- 包管理工具:VCPKG
- 项目依赖:见vcpkg.json
- 语言版本:C++17以上
- 搭建
1. vs2022+vcpkg
vs2022里自带vcpkg,使用vcpkg的manifest模式,vcpkg integrate install 集成到项目,然后编译运行即可
2. vscode+vcpkg+cmake
1.下载vscode扩展:C/C++,CMake,CMake Tool
2.由于我的编译器是mingw,你只需要修改.vscode中的部分就可以Tcp
TcpNetMgr---------
| |
v v
TcpServer ----> TcpConn ----> IEventPoller ----> EventDriver
Kcp结构同上
EventDriver是我自己实现的IEventPoller的一个实例- kcp的断连无法立刻知晓,需要新增心跳 × 根据实际经验来看,心跳实现在应用层会少很多不必要的麻烦,故不在库里面增加心跳了(无论TCP和KCP,都建议使用者自己增加心跳)
- kcp内存分配,如果你不喜欢默认的,可以自己加