简单的python telnet客户机/服务器示例

2024-10-04 05:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建telnet服务器模型(用于对现有代码进行一些功能测试)。现在我只修改了服务器欢迎消息,并且我试图使用客户端代码来读取此消息,但是它的读取方法在超时时失败,没有其他信息。但是在启用了pudb调试器后,它大部分时间都能工作。。。在

我使用的是virtualenv,使用pip安装了pudb和telnetsrv。Python2.7.12,ubuntu 16.04。在

服务器代码:

import SocketServer
from telnetsrv.threaded import TelnetHandler

class MyHandler(TelnetHandler):

    WELCOME = "HI from custom server"

class TelnetServer(SocketServer.TCPServer):
    allow_reuse_address = True

server = TelnetServer(("0.0.0.0", 8023), MyHandler)
server.serve_forever()

客户代码:

^{pr2}$

客户端输出:

$ python client.py
Data:

启用pudb的客户端输出(逐步执行)

$ python client.py
Data: HI from custom server

当然,当我执行shell telnet命令时,一切正常:

$ telnet 127.0.0.1 8023
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
HI from custom server
Telnet Server> 

如果您能给我一些关于如何调试这个问题的提示,我将不胜感激。谢谢!在


Tags: 代码fromimport服务器消息客户端servercustom
1条回答
网友
1楼 · 发布于 2024-10-04 05:26:20

一定要有真正的联系。为此,请编辑代码以添加tn.set_调试级别(100)放入脚本中,如下所示:

import telnetlib

HOST = '127.0.0.1'
PORT = 8023
# from pudb import set_trace; set_trace()
tn = telnetlib.Telnet(HOST, PORT)
tn.set_debuglevel(100)
data = tn.read_until("custom server", timeout=1)
print "Data: " + data

tn.close()

这将确保所有的数据都被打印出来,这样你就可以看到发生了什么。在

我的理论是,你没有连接,或者你的数据实际上没有输出“自定义服务器”,因此它不会捕捉到它,或者你的超时太低。在

相关问题 更多 >