🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 缘由 最近在研究陈硕的网络库muduo,是一个基于reactor架构的网络库。我对网络库的感觉是易用,但是内容庞大,依赖颇多。比如boost网络库里面的一些语法让人生畏。关于reactor和proactor架构,还有select/poll/epoll网络模型方面的基础理论知识已经掌握,自己也一直想做一个网络库来对自己之前工作的一个总结。muduo整体代码量不多,易读,整个架构也容易理解,于是我模仿muduo写了一个单线程的reactor网络库。 ## 实现这个库所需的介绍 * C++11 * 编译器gcc7.3 * linux平台 * 单线程 * 事件循环 Reactor架构。 * epoll ## 架构 ![rIeVqU.png](https://img-blog.csdnimg.cn/img_convert/0a49a7a4c5f29b1172e7550cd20819bd.png) * 整个库是对一个epoll的一个封装 * EventLoop是整个库的核心,对应的架构是 loop peer thread。 * EventLoop收集EPollPoller所产生的事件,通过Channel分发事件给TcpConnection,TcpConnection进行读写到Buffer缓冲区,然后通过回调给TcpServer。用户通过绑定与TcpServer的回调函数即可收到数据报。 ## 后续规划 该库是对epoll的一个简单的封装,只支持单线程,后续会改造为多线程。还有定时器和一些example会继续完善。 github地址:https://github.com/diycat1024/ccnet ## 2020-12-29更新 已经加入了事件循环线程池,如果需要初始化的单线程版本则可以 ``` git clone https://github.com/diycat1024/ccnet.git git checkout 70d5269d81af53c95ec080f20c294ed8e6ba4a55 ```