Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Python)socket.gaierror:[Errno 11001]getaddrinfo失败_Python_Sockets - Fatal编程技术网

(Python)socket.gaierror:[Errno 11001]getaddrinfo失败

(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

我不确定这段代码有什么问题,我一直在获取套接字。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
导入系统 导入套接字 随机输入 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))
。之后,问题得到解决。这些字符之间似乎有一个不可见的换行符。奇怪!!!!!