我不确定这段代码有什么问题我一直得到socket.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_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
添加server_name = random.choice(list(open(filename)))[:-1]
之后我再也没有得到socket.gaierror但是我得到了:
socket.error:[Errno 10060]由于连接的pa,连接尝试失败 rty在一段时间后没有正确回应,或建立连接f 由于连接的主机无法响应
答案 0 :(得分:6)
我认为问题是server_name
末尾的换行符。
如果文件格式whoiservers.txt
在每一行上都是一个主机名,那么您需要在主机名末尾删除换行符,然后再将其传递给s.connect()
因此,例如,将开放行更改为:
server_name = random.choice(list(open(filename)))[:-1]
答案 1 :(得分:0)
也许您和这些阻止请求的服务器之间有防火墙?您发布的最后一个错误导致人们相信它根本无法连接到服务器...