(Python)socket.gaierror:[Errno 11001]getaddrinfo失败
我不确定这段代码有什么问题,我一直在获取套接字。gaierror错误;\(Python)socket.gaierror:[Errno 11001]getaddrinfo失败,python,sockets,Python,Sockets,我不确定这段代码有什么问题,我一直在获取套接字。gaierror错误;\ import sys import socket import random filename = "whoiservers.txt" server_name = random.choice(list(open(filename))) print "connecting to %s..." % server_name s = socket.socket(socket.AF_INET, socket.SOCK_STR
import sys
import socket
import random
filename = "whoiservers.txt"
server_name = random.choice(list(open(filename)))
print "connecting to %s..." % server_name
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((server_name, 43))
s.send(sys.argv[1] + "\r\n")
response = ''
while True:
d = s.recv(4096)
response += d
if d == '':
break
s.close()
print
print response
s.connect((server_name, 43))
File "<string>", line 1, in connect
socket.gaierror: [Errno 11001] getaddrinfo failed
导入系统
导入套接字
随机输入
filename=“whoiservers.txt”
server_name=random.choice(列表(打开(文件名)))
打印“连接到%s…”%server\u名称
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((服务器名称,43))
s、 发送(sys.argv[1]+“\r\n”)
响应=“”
尽管如此:
d=s.recv(4096)
响应+=d
如果d='':
打破
s、 关闭()
打印
打印响应
s、 连接((服务器名称,43))
文件“”,第1行,在connect中
socket.gaierror:[Errno 11001]getaddrinfo失败
更新:
在添加server\u name=random.choice(list(open(filename)))[:-1]
之后,我不再获得该套接字。gai错误,但我得到:
socket.error:[Errno 10060]连接尝试失败,因为连接的pa
rty在一段时间后没有正确响应,或建立了连接f
由于连接的主机未能响应,因此出现故障
我认为问题在于
server\u name
末尾的换行符
如果文件whoiservers.txt
的格式是每行一个主机名,那么在将其传递到s.connect()之前,需要在主机名末尾去掉换行符
因此,例如,将开放行更改为:
server_name = random.choice(list(open(filename)))[:-1]
也许在您和这些服务器之间有防火墙阻止请求?您发布的上一个错误让人认为它根本无法连接到服务器…。我遇到了这个问题,然后这帮我解决了它。这就是我代码中的内容:mailserver=“foobar”#comment
。为了解决这个问题,我在代码中删除了服务器名称末尾的一些字符:mailserver=“fooba”comment
。然后我将这些字符添加回:mailserver=“foobar”#comment
。我也在socket.connect((mailserver,587))
中添加到socket.connect((mailserve87))
并返回到套接字。连接((mailserver,587))
。之后,问题得到解决。这些字符之间似乎有一个不可见的换行符。奇怪!!!!!