Python Socket 实战:从零构建多线程静态 Web 服务
本文通过 Python 标准库 socket 和 multiprocessing 模块,演示如何从零实现一个支持多线程的静态 Web 服务器。代码展示了 TCP 连接处理、HTTP 响应头构造及多进程并发请求的核心逻辑,适合初学者理解网络通信原理。
Python Socket 静态服务实战概述
根据师父布置的任务,我编写了一个简易服务作为练习。在深入理解 Socket 通信原理与流程后,成功运行了一个小型 Demo。该示例不仅带来了显著的成就感,其代码结构也清晰易懂,具备很好的教学启发价值。
以下是完整实现代码。
核心代码实现与逻辑解析
# coding:utf-8
import socket
from multiprocessing import Process
HTML_ROOT_DIR = ""
def handle_client(client_socket):
"""处理客户端请求"""
# 获取客户端请求数据
request_data = client_socket.recv(1024)
print("request data:", request_data)
# 构造响应数据
response_start_line = "HTTP/1.1 200 OK\r\n"
response_headers = "Server: My server\r\n"
response_body = "hello itcast"
response = response_start_line + response_headers + "\r\n" + response_body
print("response data:", response)
# 向客户端返回响应数据
client_socket.send(bytes(response, "utf-8"))
# 关闭客户端连接
client_socket.close()
if __name__=="__main__":
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 8000))
server_socket.listen(120)
while True:
client_socket, client_address = server_socket.accept()
# print("[%s, %s]用户连接上了"%client_addrest[0],client_address[1])
print("[%s, %s]用户连接上了" % client_address)
handle_client_process = Process(target=handle_client, args=(client_socket,))
handle_client_process.start()
client_socket.close()
服务启动与访问测试
服务启动后,在浏览器地址栏输入 http://127.0.0.1:8000 即可访问。
浏览器页面将显示服务器返回的内容,效果如下:

同时,服务器控制台会打印出详细的交互日志,包括客户端连接信息及请求数据:
控制台交互日志分析
[127.0.0.1, 50066]用户连接上了
request data: b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nUpgrade-Insecure-Requests: 1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5\r\nAccept-Language: zh-cn\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n'
response data: HTTP/1.1 200 OK
Server: My server
hello itcast
[127.0.0.1, 50067]用户连接上了
request data: b'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nConnection: keep-alive\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5\r\nAccept-Language: zh-cn\r\nReferer: http://127.0.0.1:8000/\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
response data: HTTP/1.1 200 OK
Server: My server
hello itcast
以上就是利用 Python 编写静态服务的全部实战内容,希望能为读者提供参考与帮助,欢迎持续关注与支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









