Linux(CentOS)-C++ HttpSever
文章平均质量分 82
使用C++语言,在Linux平台使用Socket套接字,http协议,数据库,Shell脚本技术
代码位置:https://github.com/dodamce/HttpSever
NUC_Dodamce
醉生梦死谁成器,拓马长枪定乾坤。
展开
-
Linux_网络项目_WEB服务器结项 设计CGI业务(表单提交注册用户并保存数据库功能测试,解决构建静态库/usr/bin/ld: cannot find -lstdc++报错,项目总结)
项目完成了HTTP GET,POST方法处理,并且对这两种方法大部分可能出错情况进行处理。模仿Java 的tomcat服务器搭建了CGI机制:设计创建管道,父子通信,重定向,环境变量导入,数据读写机制,CGI机制支持任何后端语言,Web开发就是开发的CGI程序,常见的CGI程序语言为java和python语言,C++并不适合开发项目扩展:技术方面:支持HTTP1.1长连接,浏览器可以一直使用这条连接进行通信。涉及连接管理,粘包问题改成epoll版本HTTP服务器,满足更大量的请求。原创 2024-03-14 22:56:46 · 863 阅读 · 0 评论 -
Linux_网络项目_WEB服务器 处理服务器写入失败后sigpipe信号导致服务器崩溃退出问题,引入线程池缓解大量请求,服务器组件化重构,在线计算机业务测试
服务器在收到链接时不创建线程,而是构建线程任务,然后将线程任务放入到线程任务队列上,最后线程池从任务队列上拿去任务处理即可,线程拿到任务后,通过任务里的CallBack回调函数执行不同的任务。线程任务CallBack设计紧贴前面重构前的代码,将Entrance类更改成CallBack即可,这里设计仿函数,线程回调函数通过()直接访问解析请求函数。此外如果服务器使用CGI时,向管道写入数据失败时,服务器进程会收到sigpipe信号直接崩溃。测试运行结果如下:线程池创建6个线程,初始化线程池正确。原创 2024-03-13 20:29:06 · 605 阅读 · 1 评论 -
Linux_网络项目_WEB服务器 设计CGI机制,与CGI处理数据(代码重构)
文章紧跟之前web服务器返回静态网页文章目录CGI设计思路:CGI设计思路:CGI原理如下图:其中CGI程序可以使用任何后端语言进行编写。而服务器是可执行程序,而CGI程序也是可执行程序。可以创建子进程使用进程替换来实现exec系列函数来实现。详情见Linux_进程替换(execl、execlp、execv、execle)服务器与CGI程序之间还涉及进程通信。这里采用两个匿名管道进行双向通信。Linux_Centos进程间通信_管道(匿名管道_命名管道)这里为了不产生歧义,管道的读原创 2022-04-15 18:21:26 · 1547 阅读 · 3 评论 -
Linux_网络项目_WEB服务器 服务器返回静态网页
需要注意,服务器响应时需要构建HTTP响应,响应网页作为响应HTTP的正文。复习见Linux_网络_应用层协议 http/https文章目录1. 填充HTTP响应1. 填充HTTP响应状态码描述采用函数来获取,函数内部是通过switch来判断状态码返回对应的字符串。HTTP响应正文是网页,这里采用sendfile直接将内核的文件拷贝到网上...原创 2022-04-07 19:45:34 · 470 阅读 · 0 评论 -
Linux_网络项目_WEB服务器 处理HTTP请求构建响应、CGI
文章目录1. 处理HTTP请求CGI1. 处理HTTP请求需要注意的是,在处理HTTP请求和构建HTTP响应之前,首先要判断HTTP请求的合法性。这个项目只支持POST和GET方法。当请求非法时直接发送错误响应即可。宏观上,客户端访问服务器有两种情况从服务器上拿取资源(打开网页,下载)将自己的资源上传到服务器上。(登录、注册)将自己的资源上传到服务器上可以使用GET通过URL传参,或者POST方法通过正文传参。而且拿到数据只是第一步,还需要进行数据处理,这里先不考虑。同时如果HTTP请求原创 2022-04-06 21:41:41 · 701 阅读 · 0 评论 -
Linux_网络项目_WEB服务器 HTTP请求的读取与解析
文章紧跟web服务器处理HTTP框架之后文章目录1. HTTP报文报头与空行的读取2. 解析HTTP请求行3. 解析HTTP首部字段4.根据解析后的HTTP首部(Content-Length)读取HTTP空行1. HTTP报文报头与空行的读取首先先按行读取HTTP报头。报头分为两部分,请求行与首部字段。//已经存在套接字,线程通过套接字处理任务#include<iostream>#include<unistd.h>#include<sys/types.h>原创 2022-04-06 10:33:17 · 845 阅读 · 0 评论 -
Linux_网络项目_WEB服务器 实现HTTP类,获取HTTP报文,按行读取HTTP请求报文数据、处理HTTP基本框架,打印错误日志
文章目录1. 分析服务器获取的http报文,按行读取HTTP报文2. 打印错误日志Log.h3. 获取HTTP报文,按行读取HTTP请求报文数据、处理HTTP基本框架1. 分析服务器获取的http报文,按行读取HTTP报文上图是服务器获取的一个完整的http报文,这个http报文没有正文。host:请求的目标主机IP和端口Accept:可以接受的数据类型重点是请求行 /不一定指的是请求服务器的根目录一次完整的http请求过程:读取请求(我们需要按照http协议规定方式(报头,有效载荷)原创 2022-04-04 17:29:45 · 1463 阅读 · 1 评论 -
Linux_网络项目_WEB服务器 URI、URL、web服务器封装单例模式套接字编码部分
网络相关知识文章目录1. URI、URL2. web服务器套接字1. URI、URLURI:全网标识唯一的资源,资源标识符。URL:资源定位符,它是一种具体的URI,URL可以标记一个资源,还指明了资源的路径。任何可以唯一标识出来的东西都可以称为URI,如果这个标识是一个可获取到上述对象的路径,那么同时它也可以是一个 URL ;但如果这个标识不提供获取到对象的路径,那么它就必然不是URL 。eg:URI: /home/index.html(在对应Linux上可以标识唯一资源)URL: www原创 2022-04-04 13:27:16 · 530 阅读 · 0 评论