(Python) socket.gaierror: [Errno 11001] сбой getaddrinfo - PullRequest
3 голосов
/ 21 апреля 2009

Я не уверен, что не так с этим кодом, я продолжаю получать ошибку 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] Попытка подключения не удалась из-за rty не отвечает должным образом через некоторое время или установил соединение вызвано, потому что подключенный хост не смог ответить

Ответы [ 2 ]

6 голосов
/ 21 апреля 2009

Я думаю, что проблема в переводе строки в конце server_name.

Если формат вашего файла whoiservers.txt - это одно имя хоста в каждой строке, то вам нужно удалить новую строку в конце имени хоста, прежде чем передать его в s.connect()

Так, например, измените открытую строку на:

server_name = random.choice(list(open(filename)))[:-1]
0 голосов
/ 21 апреля 2009

Возможно, у вас есть межсетевой экран между вами и этими серверами, который блокирует запрос? Последняя опубликованная вами ошибка заставляет поверить, что она вообще не может подключиться к серверу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...