Python-Telnetlib socket.gai错误:

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

我正在尝试通过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 = 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
错误的问题。