socket.gaierror: [错误 11003] getaddrinfo 失败

2 投票
1 回答
14489 浏览
提问于 2025-04-16 15:40
 if data.find('!scan') != -1:
 nick = data.split('!')[ 0 ].replace(':','')
 targetip = socket.gethostbyname(str(arg))
 sck.send('PRIVMSG ' + chan + " :" ' scanning host' + targetip + '\r\n')
 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,) + '\r\n')
     s.close()

我遇到了这个错误:

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

1 个回答

1

在Windows系统上,socket.gethostbyname() 这个函数会调用一个叫 getaddrinfo() 的Winsock API。如果出现错误代码11003 - WSANO_RECOVERY,可能是因为没有设置SYSTEMROOT这个环境变量。

在调用 socket.gethostbyname 之前,检查一下os.environ里是否包含SYSTEMROOT,比如:

import os
assert 'SYSTEMROOT' in os.environ

撰写回答