在Linux环境下基于C++语言开发轻量级的多线程Web服务器,服务器支持一定数量的客户端连接并及时响应,返回客户端请求的图片和视频等资源。
-
使用Epoll边沿触发的IO多路复用+非阻塞IO
-
使用同步IO模拟Proactor事件处理模式
-
使用多线程充分发挥多核CPU的优势,实现了固定线程数的半同步/半反应堆模式的线程池
-
使用基于升序链表的定时器处理超时连接
-
使用有限状态机解析HTTP请求报文,支持GET和POST方法
-
使用MySQL数据库和数据库池,实现客户端注册和登录功能
-
经过webbench压力测试可以实现上万的并发连接
- 传输大文件时,m_iv结构体不会自动偏移
每次调用writev之后进行偏移
- listenfd为ET触发模式,但在main里没有循环读取,压测的时候表现很差
listenfd设置为LT触发,addfd增加一个参数Trigger