从零开始,以C语言和C++分别实现类似Muduo网络库的服务器。应用层采用Http协议,打造出B/S架构模型,能处理浏览器请求。课程详细剖析每个环节,无论是初学

*   00 资料/

  *   01 项目模块-xmind.pdf

  *   02 Http高并发服务器 概述.pdf

  *   03 Http Web 服务器.pdf

  *   04 图解HTTP-彩色版.pdf

  *   05 项目代码.zip.zip

*   01 1. 项目概述以及要求

*   02 2. 项目效果展示

*   03 3. 关于项目业务层的说明

*   04 4. 多反应堆模型结构概述

*   05 5. 在VS中创建基于Linux的项目

*   06 6. 初始化服务器端用于监听的套接字

*   07 7. epoll 工作模型的雏形

*   08 8. 和客户端建立新连接

*   09 9. http的get请求数据块的格式

*   10 10. http的post请求数据块的格式

*   11 11. http响应消息的数据格式

*   12 12. http的状态码和如何指定content-type

*   13 13. 接收客户端的http请求消息

*   14 14. sscanf 函数的使用

*   15 15. 解析请求行

*   16 16. 发送文件的两种方式

*   17 17. 组织http响应的数据块头

*   18 18 通过http响应消息发送文件

*   19 19. Linux 中遍历目录的两种方式

*   20 20. 发送目录-上

*   21 21. 发送目录-下

*   22 22. 代码的补充和编译

*   23 23. 程序测试和部分bug的修改

*   24 24-非阻塞模式下关于sendfile函数的说明

*   25 25. 解决浏览器无法访问带特殊字符的文件的问题

*   26 26. 添加多线程处理

*   27 27. 第2阶段模块功能概述

*   28 28. Channel 模块的实现

*   29 29. ChannelMap 模块的实现 - 上

*   30 30. ChannelMap 模块的实现 - 下

*   31 31. Dispatcher 模块的实现思路

*   32 32. Dispatcher 的定义

*   33 33. EpollDispatcher 的实现 - 上

*   34 34. EpollDispatcher 的实现 - 中

*   35 35. EpollDispatcher 的实现 - 下

*   36 36. PollDispatcher 的实现 - 上

*   37 37. PollDispatcher 的实现 - 下

*   38 38. SelectDispatcher 的实现

*   39 39. EventLoop 模块的剖析

*   40 40. EventLoop 的初始化

*   41 41. 启动 EventLoop

*   42 42. 在 EVentLoop 中处理被激活的文件描述符的事件

*   43 43. 往 EventLoop 的任务队列中添加新任务

*   44 44. 主线程给子线程添加任务以及如何处理该任务

*   45 45. 处理任务队列中的任务

*   46 46. 将任务队列中的任务添加到 Dispatcher 的检测集合中

*   47 47. 任务队列中节点在 Dispatcher 中的删除和修改

*   48 48. 子线程 WorkerThread 的实现

*   49 49. 线程池 ThreadPool 的初始化

*   50 50. 线程池的启动和从线程池中取出一个反应堆实例

*   51 51. Buffer 的创建和销毁

*   52 52. Buffer 的扩容

*   53 53. Buffer 的数据写入-直接写

*   54 54. 通过 Buffer 接收套接字数据

*   55 55. 创建并初始化 TcpServer 实例

*   56 56. 启动 TcpServer

*   57 57. 主线程反应堆模型的事件添加和处理详解

*   58 58. 创建一个 TcpConnection 实例

*   59 59. 在 TcpConnection 接收客户端数据

*   60 60. HttpRequest 的定义和初始化

*   61 61. HttpRequest 资源重置和销毁

*   62 62. 添加和查找 HttpRequest 请求头

*   63 63. 解析请求行(通过指针方式解析非 sscanf 方式)

*   64 64. 优化解析请求行的代码

*   65 65. 解析请求头并存储

*   66 66. 解析完整的 http 请求协议

*   67 67. 处理 http 请求 - 上

*   68 68. HttpResponse 的定义和初始化

*   69 69. HttpREsponse 添加响应头和内存释放

*   70 70. 组织 HttpResponse 响应消息

*   71 71. 处理 Http 请求 - 下

*   72 72. 修改发送目录和文件的函数

*   73 73. 在 TcpConnection 中接收并解析 Http 请求消息

*   74 74. 给客户端回复数据的两种方式-上

*   75 75. 给客户端回复数据的两种方式 - 下

*   76 76. 内存资源的释放

*   77 77. 程序的编译和错误的修改 - 上

*   78 78. 程序的编译和bug的修改 - 下

*   79 79. 启动服务器和添加日志功能

*   80 80. 程序的调试和bug修改 - 上

*   81 81. 程序的调试和bug修改 - 下

*   82 82. 使用CPP重构项目-前言

*   83 83. 重构 Channel 类

*   84 84. 重构 Dispatcher 类

*   85 85. 重构 EpollDispatcher 类

*   86 86. 重构 PollDispatcher 类

*   87 88. 重构 EventLoop 类 - 1

*   88 87. 重构 SelectDispatcher 类

*   89 89. 重构 EventLoop 类 - 2

*   90 90. 重构 EventLoop l类 - 3

*   91 91. 重构 EventLoop 类 - 4

*   92 92. 重构 EventLoop 类 - 5

*   93 93. 重构 ThreadWorker 类

*   94 94. 重构 ThreadPool 类

*   95 95. 重构 TcpServer 类

*   96 96. 重构 Buffer 类 - 上

*   97 97. 重构 Buffer 类 - 下

*   98 98. 重构 HttpRequest 类 - 1

*   99 99. 重构 HttpRequest 类 - 2

*   100 100. 重构 HttpRequest 类 - 3

*   101 101. 重构 HttpRequest 类 - 4

*   102 102. 重构 HttpResponse 类

*   103 103. 重构 HttpResponse 类 - 续

*   104 104. 重构 TcpConnection 类 - 上

*   105 105. 重构 TcpConnection 类 - 下

*   106 106. 多反应堆服务器事件处理流程梳理

*   107 107. 程序的编译和语法上的bug修改

*   108 108. 测试和bug修改

*   109 109. 内容更正

*   110 110. 答疑-1 线程死锁

*   111 111. 答疑2 项目中如何使用互斥锁保护任务队列

*   112 112. 答疑3 关于阻塞的唤醒

*   113 113. 答疑4 关于子线程的阻塞问题