
Web服务器开发项目实战
静态Web服务器
Black.Spider
宝剑锋从磨砺出,梅花香自苦寒来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HTTP请求模块
类简介用于管理HTTP连接和解析HTTP请求报文。主要成员:文件描述符、读\写缓冲区、定时器指针和报文解析状态。核心代码解析请求报文bool HttpRequest::parseRequest(){ bool ok = true; bool hasMore = true; while(hasMore) { if(state_ == Expe...原创 2020-05-04 16:39:38 · 383 阅读 · 0 评论 -
线程池模块
类简介构造函数初始化并创建空闲线程。向任务队列添加任务,并唤醒空闲线程。核心代码1.构造函数ThreadPool::ThreadPool(int numWorkers) : stop_(false){ numWorkers = numWorkers <= 0 ? 1 : numWorkers; for(int i = 0; i < numWork...原创 2020-05-03 11:25:52 · 258 阅读 · 2 评论 -
Epoll模块
类简介Epoll类封装了epoll的常用接口,如epoll_ctl和epoll_wait。具有添加、删除、修改和处理监听事件的功能。核心代码处理监听事件void Epoll::handleEvent(int listenFd, std::shared_ptr<ThreadPool>& threadPool, int eventsNum){ assert(...原创 2020-05-03 11:06:09 · 155 阅读 · 0 评论 -
定时器模块
类简介定时器包含两个类Timer和TimerManager,其中Timer类是内部类,不对外开放,外部直接使用TimerManager类。TimerManager类用小根堆管理Timer,根据超时时间排序。TimerManager的关键函数是addTimer、delTimer、handleExpireTimers和getNextExpireTime。核心代码1.添加定时器void ...原创 2020-05-02 14:09:36 · 709 阅读 · 0 评论 -
应用层缓冲区模块
设计目的当调用write/send时,会向缓冲区中写入数据,内核和tcp协议栈负责将缓冲区中的数据发送到指定地址的目标位置。当有数据到达内核的tcp缓冲区中,如果开启了对套接字可读事件的监听,那么内核会让套接字变为可读状态,从而从poll函数中返回,调用read/recv进行读操作。如果调用write/send时,内核缓冲区已满,那么阻塞在IO函数上直到内核缓冲区有足够的空间容纳要写入的数...原创 2020-05-01 22:57:24 · 431 阅读 · 0 评论