- 博客(9)
- 收藏
- 关注
原创 Web服务器踩坑之旅:07服务器性能优化之I/O复用
项目地址:https://github.com/lanofblue/SimpleWebServer前文实现的Web服务器每次只能处理一个客户请求,这对一个Web服务器来说是不可接受的。I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。Linux下实现I/O复用的系统调用主要有select, poll, epollselect系统调用select系统调用的用途是:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常等事件#include <sys/select
2022-03-05 20:43:15
364
1
原创 Web服务器踩坑之旅:06模块组合:一个简单的服务器
项目地址:https://github.com/lanofblue/SimpleWebServer本文实现的文件在源码中的SimpleWebServer/worker_v1目录下主函数为main_v1.cpp本文内容模块组合:在前面几篇文章中,我们已经实现了web服务器的几个模块,接下来我们将用前面完成的几个模块搭建一个最简单的Web服务器依次调用HTTP_parser,file_manager,HTTP_writervoid worker_v1::process() { {
2022-03-05 20:41:41
274
原创 Web服务器踩坑之旅:05生成HTTP响应报文
项目地址:https://github.com/lanofblue/SimpleWebServer本文实现的文件在源码中的SimpleWebServer/http_writer目录下本文内容目标:生成请求报文应答报文HTTP响应的几种状态码生成请求报文当Web服务器解析完一个HTTP请求之后,如果母庙文档存在且客户具有读取该文档的权限,那么它就需要发送一个HTTP应答来传输该文档。这个HTTP应答包含1个状态行、多个头部字段、1个空行和文档问哪。其中,前3部分的内容可能被Web服务器放置在
2022-03-05 20:40:23
1697
原创 Web服务器踩坑之旅:04定位服务器上的文件资源
项目地址:https://github.com/lanofblue/SimpleWebServer本文实现的文件在源码中的SimpleWebServer/file_manager目录下本文内容:定位服务器上的文件并获取文件内容定位文件获取文件信息和内容上一篇文章中,我们已经解析了HTTP请求报文,并将文件名存入http_parser::m_url中,那么我们接下来要在服务器中定位文件,并得到它的内容。在此项目中,我设定的服务器主页是homepage.html文件,那么以访问该文件为例。若访问网
2022-03-05 20:39:00
270
原创 Web服务器踩坑之旅03:解析HTTP请求报文
项目地址:本文实现的文件在源码中的SimpleWebServer/http_parser目录下本文内容目标:解析HTTP报文,从而获取客户请求的文件的文件名及文件地址浏览器与服务器间的通信过程URL与URIHTTP协议HTTP请求报文解析HTTP请求报文浏览器与服务器间的通信过程URL和URIURL:(Uniform Resource Locator)统一资源定位符URI:(Uniform Resource Identifier)就是某个协议方案表示的资源的定位标识
2022-03-05 20:37:16
2833
原创 Web服务器踩坑之旅02:获取来自客户端的数据
项目地址:https://github.com/lanofblue/SimpleWebServer本文实现的文件在源码中的SimpleWebServer/client_and_server目录下本文内容:获取来自客户端的HTTP请求报文目标:获取来自客户端的HTTP请求报文客户端与服务器的通信套接字概述套接字描述符字节序客户端如何与服务器建立连接客户端主动发起连接请求服务器监听来自客户的连接服务器接受来自客户端的连接请求客户端向服务器发送数据客户端关闭连接
2022-03-05 20:32:43
947
原创 Web服务器踩坑之旅01:访问Web
项目地址:https://github.com/lanofblue/SimpleWebServer用HTTP访问Web使用Web浏览器通信的过程客户在浏览器输入URL浏览器客户端向服务发送客户的HTTP请求报文(实际上是浏览器客户端请求服务器上的某个文件)服务器接收到来自客户的HTTP请求报文后,解析HTTP请求报文服务器解析请求报文后,获取客户端请求的文件的文件名和文件地址服务器找到上客户请求的文件及其他资源服务器根据找到的文件生成HTTP响应报文服务器向客户发送生成的HTTP响应报
2022-03-05 20:30:36
217
原创 Ubuntu安装Python时报错:E: 无法定位软件包 python-pip
Ubuntu安装Python时报错:E: 无法定位软件包 python-pipsudo apt-get install python-pip把python改成python3sudo apt-get install python3-gevent python3-pip
2021-03-24 16:01:14
4442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人