前言
这个网络库是我一直想完成的一个个人项目,到现在也只能说完成了基础的一部分,还有很多功能没完成。因为想往linux c++后台方向发展,所以就打算实现一个网络库,来串联学到的知识,包括APUE、UNP、《Effevtive C++》等等可以说是该方向必看的书籍。暑假的时候我照着陈硕先生的Muduo网络库模仿了一个,学到了很多,但对很多细节不解,所以现在就想重新实现,同时也熟悉整个开发流程。
在这里我将会详细的讲解整个项目的实现,一来是对自己的一个总结,二来也相当于开源出来,以飨读者。当前由于水平所限,可能会有许多谬误之处,望读者多加包涵,并加以指出。
项目地址
如果觉得对你有所帮助,还望能点一下star给我个前进的动力!
silence1772/Sinetlib
简介
Sinetlib是一个仿照Muduo实现的基于Reactor模式的多线程网络库,附有异步日志,要求Linux 2.6以上内核版本。同时内嵌一个简洁HTTP服务器,可实现路由分发及静态资源访问。
- 底层使用Epoll LT模式实现I/O复用,非阻塞I/O
- 多线程、定时器依赖于c++11提供的std::thread、std::chrono库
- Reactor模式,主线程accept请求后,使用Round Robin分发给线程池中线程处理
- 基于小根堆的定时器管理队列
- 双缓冲技术实现的异步日志
- 使用智能指针及RAII机制管理对象生命期
- 使用状态机解析HTTP请求,支持HTTP长连接
- HTTP服务器支持URL路由分发及访问静态资源,可实现RESTful架构
开发环境
我使用的系统是Ubuntu 16.04
,因为并没有做多平