Linux 7 网络 webserver服务器开发项目1

lzfyz / 2023-07-30 / 原文

小项目 跟QT翻金币差不多

1.webserver服务器原理

Image

2.html语言基础介绍

ps:前端我迟早也要拿下

html语言
超文本标签语言
<> <>

此处详情查看linux服务器开发中html语言介绍


3.wireshark抓包http协议

http get post两种请求

http请求

![Image [1]](I:\webser\Image [1].png)

请求行: GET /demo.html HTTP/1.1\r\n

​ 请求方式 /请求的内容 版本\r\n

空行 \r\n 数据

http应答

![Image [3]](I:\webser\Image [3].png)

状态行

http/1.1 200 ok\r\n

版本 状态码 状态信息

  • - 401 Unauthorized   请求未经授权,这个状态代码必须和[WWW-Authenticate](http://www-authenticate/)报头域一起使用
    - 403 Forbidden      服务器收到请求,但是拒绝提供服务
    - 404 Not Found      请求资源不存在,eg:输入了错误的URL
    - 500 Internal Server Error   服务器发生不可预期的错误
    - 503 Server Unavailable     服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    

消息报头

文件的类型(必填的)

![Image [5]](I:\webser\Image [5].png)

文件的长度(可填可不填,填一定填对)

![Image [6]](I:\webser\Image [6].png)

空行

数据

要发送的数据

![Image [7]](I:\webser\Image [7].png)

4.采用epoll实现

1.搭建框架

1.epoll链接

2.读取请求 保留第一行

5.项目总结

ps1:读取出错问题cfd 此处没有进行else

也就是如果lfd 进行三次握手 之后照样进读取函数故此报错->没有请求数据

ps2:请求行最后多发送几个字节 但是读缓冲区只有2个字节 我一填 导致后面发送文件时 读缓冲区有错误信息与发送文件一起发送

ps3:发送大文件卡死问题 信号屏蔽 ->浏览器读缓冲区被写爆 我们只能暂缓写数据的时长 或者采取 libeventweb服务器方式 我再epoll上用的us

代码

https://kxd.lanzoul.com/izPRQ13tkvdi