WebServer服务器
文章平均质量分 92
爱吃芝麻球
一定是练功的时候差不多差不多,等到关键时候就总是差一点!
个人博客 https://cc922.github.io/
展开
-
WebServer项目的亮点和难点
文章目录一、亮点1.采用了Reactor设计模式为什么选择Reactor?WebServer选择的Reactor方案WebServer对Reactor的具体实现2.EPOLLONESHOT3.基于小根堆实现了定时器4.实现了可以自动增长的缓冲区5.线程池二、难点三、有待改进的地方面试被问到了这个问题,答得稀烂…但是我觉得这个问题真的问的很好,还是要好好想一想总结一下。亮点:并发模型为Reactor使用Epoll水平触发+EPOLLONESHOT,非阻塞IO为充分利用多核CPU的性能,以多线程的形式原创 2022-05-09 20:36:22 · 7962 阅读 · 0 评论 -
WebServer为什么需要将socket设置为非阻塞?
目录一些基本概念解释1.socket文件描述符有哪些2.socket文件描述符设置为阻塞的影响二、使用epoll模型将socket设置为非阻塞1.listenfd非阻塞2.clientfd非阻塞(1)epoll的ET模式(2)epoll返回读写事件,但不一定真的可读写小结一些基本概念解释1.socket文件描述符有哪些网络中的客户端和服务器进行连接通信时需要建立连接,服务器端需要两个socket文件描述符,分别是建立连接时需要的监听文件描述符listenfd和连接完成后的已连接文件描述符clientf原创 2022-05-07 12:37:07 · 2492 阅读 · 0 评论 -
WebServer项目代码逻辑分析
文章目录项目介绍一、服务器编程基本框架一、WebServer类详解1.初始化2.启动WebServer二、I/O处理的具体流程三、线程池四、HTTP请求报文解析与响应报文生成1.请求报文2.响应报文3.process()函数五、缓冲区六、定时器1.定时器的组成2.定时器的管理七、数据库连接池八、压力测试总结项目介绍该项目Linux下C++轻量级Web服务器,使用线程池+非阻塞socket+epoll(ET模式)+事件处理(Reactor)的并发模型使用状态机解析HTTP报文请求,支持解析GET、P原创 2022-05-02 17:21:35 · 3126 阅读 · 0 评论 -
WebServer服务器开发的基本逻辑
写在前面:项目采用的是单Reactor+线程池的模型单Reactor服务器模型即只有一个主线程运行Reactor。整个线程只有一个epoll句柄,用于管理所有套接字,包括listenfd(监听套接字)、clientfd(通信套接字)。首先,服务器将自己的listenfd注册到epoll上。当epoll_wait返回时,说明有新的事件。判断事件类型后进行相应操作:如果是listenfd,说明有新的连接请求,这时调用accept函数获取新连接clientfd,并将该clientfd也注册到epoll上原创 2022-04-19 17:48:37 · 3373 阅读 · 0 评论