Python Telnet端口23对223,结果不同

Python Telnet端口23对223,结果不同,python,python-3.x,windows-ce,telnetlib,Python,Python 3.x,Windows Ce,Telnetlib,当我运行此Python 3.1代码以使用telnetlib访问设备时,它会按预期工作: import telnetlib tn = telnetlib.Telnet("15.39.100.126", "23") tn.write(b"menu\n") tn.write(b"0\n") print(tn.read_all().decode('ascii')) 然后,我将此代码(与上面的代码非常类似,但此端口显示不同的菜单)运行到端口223,但什么也得不到: import telnetlib

当我运行此Python 3.1代码以使用telnetlib访问设备时,它会按预期工作:

import telnetlib

tn = telnetlib.Telnet("15.39.100.126", "23")
tn.write(b"menu\n")
tn.write(b"0\n")
print(tn.read_all().decode('ascii'))
然后,我将此代码(与上面的代码非常类似,但此端口显示不同的菜单)运行到端口223,但什么也得不到:

import telnetlib

tn = telnetlib.Telnet("15.39.100.126", "223")
tn.write(b"ipconfig\n")
tn.write(b"exit\n")
print(tn.read_all().decode('ascii'))
手动运行到223的telnet会话时,它会报告以下情况:

WinCEPocket CMD v 6.00
\> 

有没有人在同一台设备上使用Python在不同端口上使用不同的telnet行为遇到过类似的情况,或者有人知道我需要使用WinCE Pocket采取什么特殊方法?端口23不使用WinCE Pocket-只有端口223使用。这两个telnet程序在同一个windows命令外壳上运行得同样好。
telnet
命令本身对端口23和其他端口做了不同的事情:它主要实现telnet选项协商。
telnetlib
的目的是为您实现Telnet协议(选项协商等),以便您可以与端口23上的服务进行交互,该端口需要另一端的
Telnet
。由于
telnet
命令没有对端口223执行这些操作,因此您的设备可能不希望进行telnet选项协商,并且被
telnetlib
的初始化(在频带中发送telnet选项)弄糊涂了


解决方案是使用普通
套接字
与端口223交互。这方面的例子已经有很多了。

Ben,谢谢你的回答,但我不知道如何实现你所说的可能的解决方案。你能详细说明一下吗?汤本,非常感谢你的更新。根据我的经验,这是有道理的。事实上,我也用这个端口尝试过一些套接字编程,但到目前为止,我还不能从套接字代码中获得可解码的输出。我会继续尝试,也许会发布一个关于套接字代码的问题。汤姆