所以我试图完成本教程here。
我首先在这里运行代码:
import socket
HOST, PORT = '', 8888
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request.decode('utf-8'))
http_response = """\
HTTP/1.1 200 OK
Hello, World!
"""
client_connection.sendall(bytes(http_response, 'utf-8'))
client_connection.close()
然后在下一部分,它告诉我在同一台计算机上输入这一行。
$ telnet localhost 8888
我在不同的cmd窗口(在Windows中)运行webserver1.py。当我运行这一行虽然我得到一个空白的屏幕而不是
$ telnet localhost 8888
Trying 127.0.0.1 …
Connected to localhost.
像我应该的那样。有谁知道为什么?怎么解决?我试过谷歌telnet localhost 8888无济于事,我无法找到以前发生这种情况的情况。
答案 0 :(得分:0)
所以呃......除非有一个http守护进程在该端口上运行/侦听,但由于端口通常如何工作(但并非总是如此),这种情况无论如何都不会发生,这实际上与该练习的内容有关。 / p>
根据您在后台运行python脚本时从另一个cmd会话运行telnet后获得的输出,您的结果是正确的。但是,windows的oobe版本的telnet是弱点。
表示,一旦建立成功连接,使用它发送附加命令与服务器通信。脚本调用python解释器(应该使用#!/ usr / bin / env python ...只是说)并使用套接字lib中的一些对象在本地主机上的端口8888上打开一个套接字(计算机你'目前已登录)。
就是这样,仅此而已。我也经历了这个练习,然后把它弄成了https://gist.github.com/mackmoe/09de098b3df5c45adf7a17b764a1eec4
这里只需2美分: 如果你想设置一个体验服务器(并且是免费的),只需抓住virtualbox,一个linux服务器iso并使用数字海洋的演练之一。就像那个@ https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04
希望能帮助朋友!