自研静态Web服务器并返回固定⻚⾯数据

开发自己的静态Web服务器的步骤

1. 编写一个TCP服务端程序
2. 获取浏览器发送的http请求报文数据
3. 读取固定页面的数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
4. HTTP响应报文数据发送完成以后,关闭服务与客户端的套接字

静态Web服务器-返回固定页面数据的示例代码

复制代码
 1 import socket
 2 
 3 if __name__ == '__main__':
 4     # 1.编写一个TCP服务端程序
 5     # 创建socekt
 6     tcp_server_socekt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 7     # 设置端口复用 
 8     tcp_server_socekt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
 9     # 绑定地址
10     tcp_server_socekt.bind(("", 8080))
11     # 设置监听
12     tcp_server_socekt.listen(128)
13 
14     while True:
15         # 2.获取浏览器发送的HTTP请求报文数据
16         # 建立链接
17         client_socekt, client_addr = tcp_server_socekt.accept()
18         # 获取浏览器的请求信息
19         client_request_data = client_socekt.recv(1024).decode()
20         print(client_request_data)
21 
22         # 3.读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器
23         with open("./static/index.html", "rb") as f:
24             file_data = f.read()
25 
26         # 应答行
27         response_line = "HTTP/1.1 200 OK\r\n"
28         # 应答头
29         response_header = "Server:pwb\r\n"
30         # 应答体
31         response_body = file_data
32         # 应答数据
33         response_data = (response_line + response_header + "\r\n").encode() + response_body
34 
35         client_socekt.send(response_data)
36 
37         # 4.HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字
38         client_socekt.close()
复制代码

 

在浏览器访问测试:

 服务端控制台打印:

 

 小结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 编写1个TCP服务端程序
tcp_server_socekt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口复用 
tcp_server_socekt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
 
2. 获取浏览器发送的http请求报文数据
client_request_data = client_socekt.recv(1024).decode()
print(client_request_data)
3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
# 应答数据
response_data = (response_line + response_header + "\r\n").encode() + response_body
client_socekt.send(response_data)
4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。
client_socekt.close()

  

posted @   Allen_Hao  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示