Web服务器
文章平均质量分 82
才文嘉
这个作者很懒,什么都没留下…
展开
-
Web服务器---TinyWebServer代码详细讲解(log模块)
Web服务器---TinyWebServer代码详细讲解(log模块)基础知识单例模式经典的线程安全懒汉模式局部静态变量之线程安全懒汉模式饿汉模式异步日志block_queue.h 代码解析log.cpp代码解析log是日志模块,一个合格的服务器当然少不了日志来记录错误异常等等信息。我们想设计一个日志模块,他能顺利写日志但是又不要占用主线程时间去写,所以我们设计异步写日志的模块。基础知识日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件。同步日志,日志写入函数与工作线程串行执行,由于涉原创 2021-02-06 18:32:43 · 2730 阅读 · 4 评论 -
Web服务器---TinyWebServer代码详细讲解(timer模块)
TinyWebServer代码详细讲解(timer模块)基础知识设计思路定时器触发方式定时器的数据结构代码详解基础知识非活跃,是指客户端(这里是浏览器)与服务器端建立连接后,长时间不交换数据,一直占用服务器端的文件描述符,导致连接资源的浪费。定时事件,是指固定一段时间之后触发某段代码,由该段代码处理一个事件,如从内核事件表删除事件,并关闭文件描述符,释放连接资源。定时器,是指利用结构体或其他形式,将多种定时事件进行封装起来。具体的,这里只涉及一种定时事件,即定期检测非活跃连接,这里将该定时事件与连接原创 2021-01-27 17:35:28 · 2069 阅读 · 0 评论 -
Web服务器---TinyWebServer代码详细讲解(http模块)
TinyWebServer代码详细讲解(http模块)http模块设计思路http_conn.cppread业务函数集process_read函数parse_request_line函数总结这里的参照的代码是https://github.com/qinguoyi/TinyWebServer对于原代码的不足之处,我会在之后的文章中给出改进代码 在笔者fork的这版中,原代码作者对于代码作出了更细化的分类细节问题可以参考《APUE》《Linux高性能服务器编程》或者我之前的博客毋庸置疑,http模块原创 2021-01-27 17:08:36 · 5222 阅读 · 0 评论 -
Web服务器---TinyWebServer代码详细讲解(threadpool模块)
TinyWebServer代码详细讲解(threadpool模块)threadpool.h设计思路代码详解preactor与reactor总结这里的参照的代码是https://github.com/qinguoyi/TinyWebServer对于原代码的不足之处,我会在之后的文章中给出改进代码 在笔者fork的这版中,原代码作者对于代码作出了更细化的分类细节问题可以参考《APUE》《Linux高性能服务器编程》或者我之前的博客threadpool.h设计思路一个web服务器几乎离不开多线程了原创 2021-01-27 16:25:55 · 2780 阅读 · 2 评论 -
Linux网络编程:优雅的关闭连接
在这里插入代码片原创 2021-01-26 18:14:34 · 1485 阅读 · 6 评论 -
Web服务器---TinyWebServer代码详细讲解(main与WebServer)
编写一个Web服务器---代码模块详细讲解(上)config 独立参数模块ET与LT模式config.h代码解读config.cpp代码解读main 模块这里的参照的代码是https://github.com/qinguoyi/TinyWebServer对于原代码的不足之处,我会在之后的文章中给出改进代码在笔者fork的这版中,原代码作者对于代码作出了更细化的分类细节问题可以参考《APUE》《Linux高性能服务器编程》或者我之前的博客阅读任何源码一定要先从readme入手,如果没有rea原创 2021-01-26 17:51:32 · 11391 阅读 · 4 评论 -
Linux网络编程:事件处理模式与并发编程模式
事件处理模式与并发编程模式事件处理模式Reactor模式 — 异步I/OProactor — 异步I/O同步I/O模拟Proactor模式并发编程模式并发模式中的同步和异步半同步/半异步模式 或 半同步/半反应堆模式半同步/半异步模式工作流程半同步/半反应堆工作流程(以Proactor模式为例)领导者-追随者模式(Leader-Follower)还是游双大佬的《高性能Linux服务器编程》事件处理模式服务器端主要需要处理三类事件,I/O事件,定时事件和信号对于这些事件的处理,可以分成两种模式原创 2021-01-25 20:28:52 · 907 阅读 · 2 评论 -
Linux网络编程:IO模型,IO多路复用思想
I/O部分详解以及代码实现参考书籍《后台开发 核心技术与应用实践》《Linux高性能服务器编程》 《APUE》之前唠到了socket,唠到了怎么建立连接。这篇文章就唠一下,怎么向socket中写数据,怎么从socket中读出数据...原创 2021-01-22 11:50:33 · 937 阅读 · 0 评论 -
从零开始:编写一个Web服务器---【建立连接与关闭连接】详细解析与代码实现
【建立连接】详细解析与代码实现Socketsocket()参考书籍《后台开发 核心技术与应用实践》《Linux高性能服务器编程》 《APUE》SocketSocket是任何网络编程都绕不开的话题。在一切皆文件的Linux系统下,你可以视Socket为一个“文件”这个文件可以支持读和写,打开和关闭意味着我可以将我手中的数据写入socket:打开socket->写入数据可以读socket的数据:打开socket->读出数据作为文件,socket当然有自己的文件描述符,意味着它可以原创 2021-01-21 14:19:32 · 1146 阅读 · 0 评论 -
从零开始:编写一个Web服务器---Sever端与Client端详解与代码实现
Sever端与Client端详解与代码实现Server端Client端总结参考资料:《后台开发 核心技术与应用实践》《Linux高性能服务器编程》Server端Server端实现的功能很简单:调用http的解析,返回http的处理结果当然这篇文章不牵扯线程池,IO,socket具体的使用,仅从业务逻辑上介绍Sever端应该做什么在程序中,Server端会被封装成一个类。在具体实现中,这个Server会new出http的对象,然后调用http的解析函数,当http解析完成后,delete掉对应的原创 2021-01-21 13:53:10 · 1441 阅读 · 0 评论 -
从零开始:编写一个Web服务器---HTTP部分详细讲解以及代码实现(二)
HTTP部分详细讲解以及代码实现(二)Web服务器中的有限状态机HTTP有限状态机从状态机主状态机在此之前,我希望你可以读一下我的另一篇文章:Linux网络编程:状态机本文介绍了Web服务器中的状态机参考书籍《后台开发 核心技术与应用实践》参考代码 https://github.com/qinguoyi/TinyWebServerWeb服务器中的有限状态机Web服务器中的有限状态机体现在两个方面:http和tcphttp有限状态机体现在业务逻辑处理tcp有限状态机体现在对于连接情况的原创 2021-01-17 20:04:08 · 2665 阅读 · 3 评论 -
Linux网络编程:状态机
Linux网络编程:状态机原创 2021-01-17 14:07:14 · 1740 阅读 · 1 评论 -
从零开始:编写一个Web服务器---HTTP部分详细讲解以及代码实现(一)
HTTP部分详细讲解以及代码实现HTTP---Hyper Text Transfer Protocol(超文本传输协议)HTTP请求过程HTTP请求分类状态码(Status-Code)如何实现HTTP部分?分析功能Client与Server共有功能Client专属功能Server专属功能代码实现本文是从零开始Web服务器的第二篇,本篇将正式从代码入手讲解整个网络编程给出笔者学习期间接触到的Web服务器代码(C/C++)连接https://github.com/EZLippi/Tinyhttpdht原创 2021-01-16 22:00:21 · 3721 阅读 · 2 评论 -
从零开始:编写一个Web服务器---了解Web服务器
从零开始:编写一个Web服务器---1.了解Web服务器什么是Web Server?用户如何与Web Server通信HTTP协议的基本过程(应用层)TCP协议的基本过程(运输层)在看完Linux网络编程之后,突然想做一个有挑战性的项目,实现一个高性能的Web服务器。于是我萌生了一边自己学着写服务器,一边详细的写出一个Web服务器的整体流程。本系列文章推荐的参考书有:《Linux高性能服务器编程(游双)》 《APUE》《CSAPP》阅读本系列文章不需要全部弄懂这几本书,只需要有一个大概框架即可,参考原创 2021-01-16 17:15:38 · 1814 阅读 · 0 评论