Python-Telnetlib socket.gai错误:
我正在尝试通过python创建telnet to Teamspeak 3服务器查询,以下是我的代码:Python-Telnetlib socket.gai错误:,python,sockets,telnetlib,Python,Sockets,Telnetlib,我正在尝试通过python创建telnet to Teamspeak 3服务器查询,以下是我的代码: __author__ = 'Khailz' import telnetlib, socket HOST = "unlightedgaming.com" port = 10011 timeout = 5 for i in range(len(HOST)): print "scanning " + HOST[i] + " ...\n" try: tn = t
__author__ = 'Khailz'
import telnetlib, socket
HOST = "unlightedgaming.com"
port = 10011
timeout = 5
for i in range(len(HOST)):
print "scanning " + HOST[i] + " ...\n"
try:
tn = telnetlib.Telnet(HOST[i],23,3)
except socket.timeout:
pass
#tn = telnetlib.Telnet(host, port, timeout)
#telnetlib.Telnet(host, port, timeout)
tn.read_until("Welcome to the TeamSpeak 3 ServerQuery interface")
print tn.read_all()
但我似乎从套接字中得到了错误,它说它无法获取地址
C:\Python27\python.exe C:/Users/Khailz/PycharmProjects/Teamspeak-IRC/test.py
scanning 1 ...
Traceback (most recent call last):
File "C:/Users/KhailzXsniper/PycharmProjects/Teamspeak-IRC/test.py", line 14, in <module>
tn = telnetlib.Telnet(HOST[i],23,3)
File "C:\Python27\lib\telnetlib.py", line 211, in __init__
self.open(host, port, timeout)
File "C:\Python27\lib\telnetlib.py", line 227, in open
self.sock = socket.create_connection((host, port), timeout)
File "C:\Python27\lib\socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11004] getaddrinfo failed
C:\Python27\python.exe C:/Users/Khailz/PycharmProjects/Teamspeak IRC/test.py
扫描1。。。
回溯(最近一次呼叫最后一次):
文件“C:/Users/KhailzXsniper/PycharmProjects/Teamspeak IRC/test.py”,第14行,在
tn=telnetlib.Telnet(主机[i],23,3)
文件“C:\Python27\lib\telnetlib.py”,第211行,在_init中__
self.open(主机、端口、超时)
文件“C:\Python27\lib\telnetlib.py”,第227行,打开
self.sock=socket.create_连接((主机、端口),超时)
文件“C:\Python27\lib\socket.py”,第553行,位于create\u connection中
对于getaddrinfo(主机、端口、0、SOCK_流)中的res:
socket.gaierror:[Errno 11004]getaddrinfo失败
我做错了什么对于
主机
中的每个字符,您正在尝试解析该字符;这是因为您将for
循环与索引主机
结合使用。例如,在第一次迭代中,您试图连接到I.P.为“1”
的主机-这就是产生错误的原因
要修复它,只需不要尝试连接到HOST
的特定索引:在调用telnetlib.Telnet
时,去掉HOST[i]
,并将其替换为HOST
:
tn = telnetlib.Telnet(HOST, 23, 3)
然而,对于您试图如何处理该循环,我感到困惑。在我之前,我得到了错误回溯(最近一次调用):文件“C:/Users/KhailzXsniper/PycharmProjects/Teamspeak IRC/test.py”,第14行,在print tn.read_all()文件“C:\Python27\lib\telnetlib.py”,第384行,在read_all self.fill_rawq()文件中“C:\Python27\lib\telnetlib.py”,第575行,在fill\u rawq buf=self.sock.recv(50)中socket.timeout:超时
我想忽略此错误并尝试reconnection@Khailz是的,但那是一个不同的错误。我已经解决了你给我提出的问题-你总是可以就你刚才评论的错误提出不同的问题。从我在提问之前的研究来看,人们说做一个循环是正确的解决问题的最佳方法it@Khailz他们可能是对的,但正如我所解释的,您的实现导致了错误。我强烈建议您提出一个带有timeout
错误的问题。