【问题标题】:Telnet losing connection when key is pressed按键时 Telnet 断开连接
【发布时间】:2020-05-04 16:16:49
【问题描述】:

我目前是第一次在 python 中使用编程服务器,并且我正在使用 telnet 作为我当前的服务器。我使用名称 testserver.py 作为包含 Python 中服务器代码的文件。

python testserver.py

如果需要,我可以提供服务器代码,但我的主要问题源于我在命令提示符中输入以下文本:

telnet localhost 8000

其中 8000 是用于表示我的端口的任意数字。然后我点击回车并 telnet 连接到主机。但是,只要我按下键盘上的一个键,服务器的内容,在我的例子中是“Hello, World!”,就会显示出来,并且 telnet 会失去连接。本质上,我的 telnet 会话即将结束,但我需要保持打开状态......我该如何解决这个问题?

【问题讨论】:

  • 我想添加你的服务器代码。 Telnet 通常会保持连接活动,直到它被明确关闭(或网络问题)。快说吧!
  • 我该怎么做
  • 你好。抱歉,我的意思是请将服务器代码添加到问题中。还有telnet输出。实际上现在想知道这是否是 telnet 的标准行为。有一段时间没用了。将检查它...

标签: python server command-prompt telnet


【解决方案1】:

正如评论中提到的telnet 应该保持连接,只要它没有关闭。如果您使用以下服务器代码,您应该会看到您想要的行为:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', 9999))
s.listen(1)

c,remote=s.accept()

while(len(c.recv(4096)) > 0):
    c.send("ok\n".encode())

使用python server.py 之类的内容运行上述内容,然后您应该能够从 telnet 获得类似以下行为的内容,我刚才能够在python:3.7.3-stretch docker 映像中验证这一点(添加了 telnet) .

root@c4a34304039b:/# telnet localhost 9999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
test
ok
test2
ok

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-28
    • 2022-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2022-07-12
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多