- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个简单的 python3 网络服务器。我已经尝试了各种教程,并且都运行良好。尽管如此,还是有一点我不明白。
在一个教程中,他们使用 HTTPServer 如下:
server = HTTPServer(('', PORT_NUMBER), myHandler)
server.serve_forever()
在另一个教程中,他们使用 socketserver.TCPServer 如下:
with socketserver.TCPServer(('', PORT_NUMBER), myHandler) as httpd:
httpd.serve_forever()
这两种方法有什么区别?我所需要的只是一个简单的网络服务器,它能够通过 POST 接收 JSON 文件并用另一个 JSON 进行回答。在这两种情况下,我都会使用相同的处理程序:
class myHandler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write("{dummy:'dummy'}")
def do_POST(self):
# Doesn't do anything with posted data for this example
self._set_headers()
self.wfile.write("{dummy:'dummy'}")
其中一种方法是否更适合我的需要?有没有更好的方法来编写这个服务器来满足我的需要?
感谢您的帮助和时间!
最佳答案
TCP 是OSI 第 4 层传输协议(protocol),而 HTTP 是更高层的第 7 层应用协议(protocol),建立在 TCP 之上。
事实上,根据documentation,看起来HTTPServer
直接继承自socketserver.TCPServer
。 :
One class, HTTPServer, is a socketserver.TCPServer subclass. It creates and listens at the HTTP socket, dispatching the requests to a handler.
例如,TCP 将负责建立连接(使用SYN
、SYN-ACK
和ACK
的三向握手)但它在数据交互(请求/响应)的结构方面并没有真正规定太多。如果您使用 TCP 协议(protocol),您通常需要自己编写所有数据处理代码。
All I need is a simple webserver that is able to receive JSON files through POSTs and aswer with another JSON
这表明 HTTP 服务器更适合您的需求,因为 POST
的概念以及您对 answer with another JSON
的描述可能会包括响应(带有响应主体、响应 header 和响应状态)。所有这些都将是 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()
服务器实例化工作的常见模式似乎是
http.server.SimpleHTTPRequestHandler
),因此 socketserver.TCPServer(("", PORT), myhandler)
.with
关键字),很可能是因为您需要在服务器完成执行后拆除/释放资源。关于python - TCPServer 与 HTTPServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045415/
com.sun.net.httpserver.HttpServer 是否支持单连接管道?它似乎并行处理多个客户端,但单个连接的请求正在串行执行。 这准确吗?如果准确,有没有办法解决这个问题? 最佳答案
有时(很少)当我连接到 com.sun.net.httpserver.HttpServer 的运行实例时,我会收到“连接被拒绝”消息。 有人知道这是为什么吗?它可以处理的连接数是否有线程限制?我可以增
我正在使用 Eclipse Indigo 和 Java jdk7。 我想创建一个小型网络服务器,但我无法使用 sun 的网络服务器。 当我输入时: { com.sun.net.httpserver.
JDK 6 中嵌入的 Http Server 对开发 Web 服务有很大帮助,但我遇到了这样的情况:我发布了一个端点,然后代码崩溃并让服务器继续运行。 失去对嵌入式服务器(或发布的端点)的引用后,如何
这个问题不太可能对 future 的访客有帮助;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the hel
我是一名经验丰富的 Java 程序员,但也是一名 Web 开发新手。我正在尝试使用 JDK 1.6 附带的 HttpServer 类来组合一个简单的 Web 服务。从我看过的示例来看,HttpHand
我正在开发一个将发送和接收 JSON 字符串的 Java Web 应用程序。 JSON 通过 jersey 生成并映射到 jaxb 注释的 pojo。 应用程序本身不是很复杂,但需要在大流量下工作。我
我在集成测试中使用 com.sun.net.httpserver.HttpServer。它完成了它的工作,但我注意到 ServletContextListener 的 方法在测试期间没有被调用。当我将
我需要使用 com.sun.net.httpserver.HttpServer 处理 HTTP 请求哪些请求由以下 URL 架构触发: http://somehost:9000// 是传递给 的参数
我有一项家庭作业是用 java 创建一个 http 服务器,一个简单的从头开始的服务器。在谷歌和这里搜索之后......我发现此链接 "see the best response" react 非常好
我有两个从客户端到服务器的 HttpURLConnections。这不是典型的 HttpServer,我正在对客户端和服务器进行编码,但只能使用端口 80/443(用于测试任何端口是否有效)。第一个请
是否可以使用 com.sun.net.httpserver.HttpServer 实现 HTTP 代理?基于Javadoc ,我知道为了为请求提供处理程序,我必须提供“上下文”和处理程序之间的映射。然
我可以像这样运行一个简单的网络服务吗: @Path("/rs/hello") public class HelloWorldProgram { //path is default @G
我们在使用部署在 Glassfishv2.1 服务器上的 JAX-WS 堆栈为 WS 端点实现重新连接逻辑时发现了这个问题。我们在集群环境中部署 Web 服务。为了简化部署,我们使用 0.0.0.0
尝试设置一个简单的 Dart HttpServer : import 'dart:io'; void main() { HttpServer.bind(InternetAddress.ANY_IP
我正在尝试使用 Delphi 7/indy(9) 组件(控制台应用程序,没有表单/应用程序)创建 HttpServer: 更新:带有无限循环的完整控制台示例。 program httpserver;
我有一个简单的设置,包括一个带有一些上下文的 HttpServer 来加载图像和 CSS 文件: public class Server { private HttpServer httpSe
我在 Java 中使用一个非常简单的 httpServer 作为 api rest,包括 GET、POST、PUT 和 DELETE。我正在使用基本身份验证,我有几个类 Authentication.
我已经尝试了很多不同的方法来为 Python 编写一个简单的 HTTP 服务器(在托管环境中使用 IronPython),每当出现错误(例如运行时错误)时,Python 环境就会挂起,而不是关闭和报告
我正在使用来自 com.sun.net.httpserver 的简单 Http 服务器,如 simple HTTP server in Java using only Java SE API 中所述.
我是一名优秀的程序员,十分优秀!