我正在使用telnet lib从Telnet服务器读取。
我的代码如下:
s = telnetlib.Telnet(self.host, self.port) while 1: line = s.read_until("\n") print(line)到目前为止这个工作正常,但是当我查看网络流量时,我可以在客户端和服务器之间看到大量的数据包。如果我使用原始套接字,则不会发生这种情况。
网络上的数据包几乎是空的。我猜这是下一个charakter的拉动
有人对此有解释吗?我不想垃圾邮件我的telnet服务器,但我喜欢read_until机制的想法,因为我可以逐行获取。
谢谢!
答案 0 :(得分:0)
您的Telnet服务器似乎在非缓冲模式下工作(不是发送整条线路,而是发送单独数据包中的每个符号)。您可能需要更改服务器设置,以便它可以在缓冲模式下工作。
另外,您可能会看到:
\n\n\r
修改强>
另一个可能的原因是轮询,你可以试试这个:
import sys
import select
del select.poll
import telnetlib
tn = telnetlib.Telnet('10.32.137.39', 3008)
while 1:
line = s.read_until("\n")
print(line)
要说一些更具体的信息,看看Wireshark的流量跟踪会很棒
答案 1 :(得分:0)
使用:
解决了这个问题import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((self.host, self.port))
for i in s.makefile('r'):
print("FOO " + i)