代码拉取完成,页面将自动刷新
同步操作将从 kibaamor/knet 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一个跨平台的无锁且支持定时器的C++11网络库。
vcpkg install knet
# 克隆源代码
git clone https://github.com/KibaAmor/knet.git # 或者 https://gitee.com/kibaamor/knet.git
# 进入项目目录
cd knet
# 生产编译工程文件
cmake . -B build
# 编译Release
cmake --build build --config Release
# 运行测试
(cd build && ctest --output-on-failure)
# 安装
(cd build && sudo make install)
knet的核心概念是:socket的生产-消费
。
本质来说:客户端连接服务器和服务器接受客户端的连接都是创建可以读写socket。而创建socket后,客户端和服务器对socket的操作都是一样的发送消息和接受消息。那么这个过程就可以看作是一个生成socket和消费socket的过程。如下图:
producer consumer
┌───────────┐ ┌──────────────┐
│ connector │ ——————————> │ worker │
│ │ socket │ │
│ acceptor │ ——————————> │ async_worker │
└───────────┘ └──────────────┘
example目录下提供了使用knet实现的echo服务器和echo客户端.
┌───────────────┬──────┐
│ 数据大小(4字节) │ 数据 │
└───-───────────┴──────┘
网络包前4个字节为后面数据的大小,紧跟在后面的为数据。
echo服务器将接收到的数据原封不动的发回给客户端。
同时还设置了定时器检查是否在指定的时间内收到了客户端的消息,如果未在指定时间收到客户端消息,将关闭与客户端的连接。
服务器提供了两种:
客户端启动后主动连接服务器(如果连接不上服务器,则会自动重连服务器),连接成功后,会主动给服务器发送不完整的
网络包。
在收到服务器返回的网络包时,会对数据封包进行校验,失败时会断开连接。
客户端也提供了两种:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。