- 博客(6)
- 收藏
- 关注
原创 HTTP请求模块
类简介用于管理HTTP连接和解析HTTP请求报文。主要成员:文件描述符、读\写缓冲区、定时器指针和报文解析状态。核心代码解析请求报文bool HttpRequest::parseRequest(){ bool ok = true; bool hasMore = true; while(hasMore) { if(state_ == Expe...
2020-05-04 16:39:38 318
原创 HTTP协议详解
HTTP工作过程地址解析:DNS解析域名,得到目标IP地址。封装HTTP请求数据包封装成TCP包,建立TCP连接客户机发送请求命令:请求格式为统一资源定位符、协议版本号、MIME信息(请求修饰符、客户机信息和可能内容)。服务器响应:状态行(协议版本号和状态码)、MIME信息(服务器信息、实体信息和可能内容),实体信息是服务器像浏览器发送头信息后,他会发送一个空白行来表示头信息的发送结束...
2020-05-04 15:41:42 149
原创 线程池模块
类简介构造函数初始化并创建空闲线程。向任务队列添加任务,并唤醒空闲线程。核心代码1.构造函数ThreadPool::ThreadPool(int numWorkers) : stop_(false){ numWorkers = numWorkers <= 0 ? 1 : numWorkers; for(int i = 0; i < numWork...
2020-05-03 11:25:52 210 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 109
原创 定时器模块
类简介定时器包含两个类Timer和TimerManager,其中Timer类是内部类,不对外开放,外部直接使用TimerManager类。TimerManager类用小根堆管理Timer,根据超时时间排序。TimerManager的关键函数是addTimer、delTimer、handleExpireTimers和getNextExpireTime。核心代码1.添加定时器void ...
2020-05-02 14:09:36 598
原创 应用层缓冲区模块
设计目的当调用write/send时,会向缓冲区中写入数据,内核和tcp协议栈负责将缓冲区中的数据发送到指定地址的目标位置。当有数据到达内核的tcp缓冲区中,如果开启了对套接字可读事件的监听,那么内核会让套接字变为可读状态,从而从poll函数中返回,调用read/recv进行读操作。如果调用write/send时,内核缓冲区已满,那么阻塞在IO函数上直到内核缓冲区有足够的空间容纳要写入的数...
2020-05-01 22:57:24 341
基于gmock实现的cppmockfree的使用方法总结
2023-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人