我正在使用python3.3版本。我有Windows7机器,我试图在python中使用套接字模块编写程序。如果我使用套接字模块,我就无法获得登录提示。
import socket
host = '10.155.208.33'
port= 23
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
data=s.recv(1024)
print(data)
>>> b"\xff\xfd%\xff\xfb\x01\xff\xfb\x03\xff\xfd'\xff\xfd\x1f\xff\xfd\x00\xff\xfb\x00"
s.sendall(b'\xff\xfe\x01\xff\xfd\x03\xff\xfc\x18\xff\xfc\x1f') >>> Im not sure whether this correct IAC client reply
data =s.recv(1024)
print(data)
>>>b'' <<< server response is empty.
我不熟悉IAC命令。有人能指出用于客户端和服务器之间通信的正确握手吗?
我尝试使用telnetlib模块用于python3.3,模块在我的Windows机器上无法正常工作。
谢谢, 阿南德
答案 0 :(得分:1)
您可以安全地对每个IAC协商请求做出否定回应。也就是说,对于每个IAC-DO,回复IAC-WONT。对于每个IAC-WILL,回复IAC-DONT。
您可能会发现此代码很有用:
def read(s):
while True:
data = s.recv(10240)
for do in re.findall('\xff\xfd.', data): # IAC DO cmd
s.send('\xff\xfc'+do[2]) # IAC WONT cmd
for will in re.findall('\xff\xfb.', data): # IAC WILL cmd
s.send('\xff\xfe'+will[2]) # IAC DONT cmd
data = re.sub('\xff[\xfb-\xfe].', '', data)
if data != '':
return data