自研静态Web服务器并返回固定⻚⾯数据
1.网络编程之IP地址&子网掩码2.端口&端口号3.Socket(套接字)4.socket模块中socket类5.socket加密传输6.socket加密传输&mysql应用7.Socket客户端实现8.Socket客户端与服务端9.TCP(Transmission Control Protocol)传输控制协议10.网络传输数据的编解码11.TCP客户端开发12.socket之send和recv原理剖析13.多任务版TCP服务端程序开发14.UDP15.http协议之网址16.http协议之简介17.http协议之请求报文18.http协议之响应报文19.搭建Python⾃带静态Web服务器
20.自研静态Web服务器并返回固定⻚⾯数据
21.静态web服务器-根据请求返回指定页面数据22.静态Web服务器-多任务版23.静态Web服务器-以⾯向对象的模式开发24.静态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() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律