1 回答
TA贡献1789条经验 获得超10个赞
TCP 是OSI 第 4 层传输协议,而 HTTP 是更高的第 7 层应用程序协议,建立在 TCP 之上。
实际上,根据文档HTTPServer,它看起来像直接继承自:socketserver.TCPServer
一个类 HTTPServer 是 socketserver.TCPServer 的子类。它创建并侦听 HTTP 套接字,将请求分派给处理程序。
例如,TCP 将负责建立连接(与SYN、SYN-ACK和的三次握手ACK),但它并没有真正规定数据交互(请求/响应)的结构。如果您使用 TCP 协议,您通常需要编写所有自己的数据处理代码。
我只需要一个简单的网络服务器,它能够通过 POST 接收 JSON 文件并使用另一个 JSON
这表明 HTTP 服务器在这里更适合您的需求,因为 a 的概念POST,并且您对 an 的描述answer with another JSON可能会包含响应(带有响应正文、响应标头和响应状态)。所有这些都是 HTTP 概念。作为http.server. BaseHTTPRequestHandler状态的文档,它将包含一个名为的实例变量command,即您的请求方法(GET例如)。
我无法确切说明myhandler在您的示例代码中是如何分配的,但是查看其他一些文档示例,它看起来像http.server.SimpleHTTPRequestHandler:
import http.server
import socketserver
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
服务器实例化工作的常见模式似乎是
实例化一个较低级别的协议服务器(即 TCP)并传入较高级别的处理程序(如
http.server.SimpleHTTPRequestHandler),因此socketserver.TCPServer(("", PORT), myhandler).要在上下文管理器(
with关键字)中使用它,很可能是因为您需要在服务器完成执行后拆除/释放资源。
添加回答
举报
