gpt4 book ai didi

python - Telnet 到 Python 服务器卡住

转载 作者:行者123 更新时间:2023-12-01 00:53:37 25 4
gpt4 key购买 nike

我正在准备一个演示,我想使用一个简单的服务器,而不是 nginx 或任何其他流行的服务器。

我从python官方页面得到了以下一个:

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

所以,我运行它,一切似乎都很好:

python -m SimpleHTTPServer 8000

如果我进入浏览器,或者 curl IP 地址,它就可以正常工作:

xx.xx.xx.xx - - [31/May/2019 09:36:33] "GET / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:37:43] "GET / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:37:46] "HEAD / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:39:03] "HEAD / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:39:06] "GET / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:39:12] "GET / HTTP/1.1" 200 -
xx.xx.xx.xx - - [31/May/2019 09:39:13] "GET / HTTP/1.1" 200 -

现在,当我通过 telnet 连接到服务器并执行 GET 时,服务器卡住了:

$ telnet xx.xx.xx.xx 8000
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
GET / HTTP/1.1
...It just hangs here foever...

当我在服务器上按下 ctrl+c 时,它向我显示发生的异常,我不知道如何在这种情况下解释:

^C----------------------------------------
Exception happened during processing of request from ('xx.xx.xx.xx', 47346)
Traceback (most recent call last):
File "/usr/lib/python3.5/socketserver.py", line 313, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python3.5/socketserver.py", line 341, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python3.5/socketserver.py", line 354, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.5/socketserver.py", line 681, in __init__
self.handle()
File "/usr/lib/python3.5/http/server.py", line 422, in handle
self.handle_one_request()
File "/usr/lib/python3.5/http/server.py", line 400, in handle_one_request
if not self.parse_request():
File "/usr/lib/python3.5/http/server.py", line 334, in parse_request
_class=self.MessageClass)
File "/usr/lib/python3.5/http/client.py", line 206, in parse_headers
line = fp.readline(_MAXLINE + 1)
File "/usr/lib/python3.5/socket.py", line 576, in readinto
return self._sock.recv_into(b)
KeyboardInterrupt
----------------------------------------

我还通过 SSH 连接到运行服务器的同一台计算机,并执行连接到本地主机的请求。也挂了。

我想知道:

  1. telnet GET 与其他 GET 有何不同。
  2. 在 python 服务器级别,异常意味着什么以及如何解决它。

最佳答案

  1. How is telnet GET different to other GETs.

telnet 在这里没有什么不同。您的服务器挂起,因为它正在等待您完成 GET 请求的输入。为此,您只需在输入 GET 请求后按 Enter 两次即可。

这是因为:

  • 需要一个 CR-LF 字符来结束 HTTP 请求的消息 header 部分(如指定的 here )
  • 另一个是实际的 CR-LF,它告诉 telnet 您已完成输入
  1. At python server level, what does the exception mean, and how to solve it.

这只是您按 Ctrl + C 的结果,从而中断了运行 SimpleHTTPServer 的 Python 进程。

关于python - Telnet 到 Python 服务器卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com