写一个基础 Web 服务器:最小可用实现
副标题 / 摘要 从 socket 到 HTTP 响应,最小 Web 服务器可以帮助理解网络协议的关键流程。本文给出可运行示例。 目标读者 想理解 HTTP 与 socket 的开发者 学习网络编程的工程师 需要构建服务端基础的人 背景 / 动机 很多 Web 框架屏蔽了底层细节。 写一个最小服务器能帮助理解请求解析、响应构造与连接管理。 核心概念 Socket:网络通信的基础接口 HTTP 请求/响应:文本协议 监听/接受连接:服务端循环 实践指南 / 步骤 监听端口 接受连接并读取请求 构造 HTTP 响应并返回 关闭连接 可运行示例 import socket def run(host="127.0.0.1", port=8080): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(1) print("listening on", port) conn, _ = s.accept() data = conn.recv(1024) if data: body = "Hello" resp = ( "HTTP/1.1 200 OK\r\n" f"Content-Length: {len(body)}\r\n" "Content-Type: text/plain\r\n\r\n" f"{body}" ) conn.sendall(resp.encode("utf-8")) conn.close() s.close() if __name__ == "__main__": run() 解释与原理 服务器需要:监听 → 接受连接 → 读取请求 → 返回响应。 HTTP 是文本协议,因此构造响应字符串即可。 ...