开发自己的静态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. 编写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()
标签:Web,socket,自研,报文,client,服务器,socekt,data,response From: https://www.cnblogs.com/allenxx/p/17647350.html