Skip to content

LewisKulen/AsioNet

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsioNet

简介

闲着没事干写的网络库,基于Asio开发,支持TCP和KCP。功能很原始。

  • 参考资料
  1. https://github.com/libinzhangyuan/asio_kcp
  2. https://pkg.go.dev/github.com/xtaci/kcp-go
  3. https://luyuhuang.tech/2020/12/09/kcp.html
  4. https://www.boost.org/doc/libs/1_84_0/doc/html/boost_asio/reference/ip__tcp/socket.html
  • 设计原则
  1. 代码是给人看的,因此均使用简单的模板实现
  2. 尽量使用面向对象编程,因此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的一个实例

已知问题

  1. kcp的断连无法立刻知晓,需要新增心跳 × 根据实际经验来看,心跳实现在应用层会少很多不必要的麻烦,故不在库里面增加心跳了(无论TCP和KCP,都建议使用者自己增加心跳)
  2. kcp内存分配,如果你不喜欢默认的,可以自己加

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 95.7%
  • Python 2.4%
  • CMake 1.6%
  • C 0.3%