socket.gaierror:使用套接字时提供的[Errno 8]节点名或服务名

时间:2019-04-18 06:33:51

标签: python

我正在编写一个小的portscan程序,运行时出现以下错误:

  

socket.gaierror:是否提供了[Errno 8]节点名或服务名   

我发现一些帖子在讨论相同的错误,但这都与其他模块有关。我已经尝试过,所以我知道错误的来源。

我尝试过的事情:

  • 当我通过编写例如hosts_ip [1]
  • 我发现当我使用socket.gethostbyname()并输入例如域名Ill时,会得到该主机的IP。
  • 当我用引号中的IP替换host_ip(错误所在)时,代码有效,例如127.0.0.1

为什么下面的代码不能与文件中的条目一起使用?我在加载/读取文件时做错了吗?在此先感谢您,真的很好奇这里的问题。

import os
import subprocess
import socket
import sys

def load_hosts():
    file = open('hosts.txt', 'r')
    hosts = file.readlines()
    return hosts

def portscan():
    hosts = load_hosts()
    port = 80
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(4)
    for host_ip in hosts:
        result = sock.connect_ex((host_ip, port)) #Error is here
    if result == 0:
        print('[*] Port is open')
    else:
        print('[-] Port is closed')
    sock.close()

0 个答案:

没有答案