簡體   English   中英

簡單的python telnet客戶端/服務器示例不起作用

[英]Simple python telnet client/server example doesn't work

我正在嘗試創建模型telnet服務器(用於對現有代碼進行一些功能測試)。 現在,我僅修改了服務器歡迎消息,並且嘗試使用客戶端代碼讀取此消息,但是超時時讀取方法失敗,沒有其他信息。 但是啟用pudb調試器后,它大部分時間都可以工作...

我正在使用virtualenv,並使用pip安裝了pudb和telnetsrv。 Python 2.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()

客戶代碼:

import telnetlib

HOST = '127.0.0.1'
PORT = 8023
# from pudb import set_trace; set_trace()
tn = telnetlib.Telnet(HOST, PORT)

data = tn.read_until("custom server", timeout=1)
print "Data: " + data

tn.close()

客戶輸出:

$ 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> 

我非常感謝有關如何調試此問題的任何提示。 謝謝!

確保實際上正在進行連接。 為此,請編輯您的代碼以將tn.set_debuglevel(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()

這樣可以確保打印出所有數據,以便您查看發生了什么。

我的理論是,您沒有連接,或者您的數據實際上沒有輸出“自定義服務器”,因此它無法捕獲該數據,或者您的超時時間太短。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM