ошибка socket.gaierror: [Ошибка 11003] ошибка getaddrinfo

#python #sockets #irc

#python #сокеты #irc

Вопрос:

  if data.find('!scan') != -1:
 nick = data.split('!')[ 0 ].replace(':','')
 targetip = socket.gethostbyname(str(arg))
 sck.send('PRIVMSG '   chan   " :" ' scanning host'   targetip   'rn')
 for i in range(20, 1025):
     s = socket(AF_INET, SOCK_STREAM)
     result = s.connect_ex((targetip, i))
     if (result == 0) :
          s.send('PRIVMSG '   chan   " :" 'port %d: OPEN' % (i,)   'rn')
     s.close()
  

Я получаю эту ошибку:

     targetip = socket.gethostbyname(str(arg))
socket.gaierror: [Errno 11003] getaddrinfo failed
  

Комментарии:

1. Не могли бы вы немного конкретнее сформулировать свой вопрос и предоставить некоторую дополнительную информацию? Что находится в arg? Вы уверены, что у вас есть доступ к вашему DNS-серверу? Что вы уже сделали, чтобы попытаться устранить эту проблему?

2. @Robert S. Barnes arg — это аргумент, который пользователь приводит после !сканирования .. пример: !сканировать IP

3. Каково значение arg ? Правильно ли настроены ваши преобразователи?

Ответ №1:

В Windows socket.gethostbyname() вызывает getaddrinfo() вызов Winsock API, и ошибка 11003 — WSANO_RECOVERY может быть вызвана тем, что не установлена переменная окружения SYSTEMROOT.

Проверьте, содержит ли os.environ SYSTEMROOT, прежде чем вызывать socket.gethostbyname, например:

 import os
assert 'SYSTEMROOT' in os.environ