socket.gaierror:[Errno -2] Python3不知道的名称或服务

时间:2017-06-16 13:52:13

标签: python sockets

我正在尝试使用端口扫描程序。

import socket
import subprocess
import sys
from datetime import datetime

subprocess.call('clear', shell=True)

remoteServer    = input("Enter a remote host to scan: ")
remoteServerIP  = socket.gethostbyname(remoteServer)

print( "-" * 60)
print( "Please wait, scanning remote host", remoteServerIP)
print( "-" * 60)

t1 = datetime.now()

try:
    for port in range(1,1025):  
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteServerIP, port))
        if result == 0:
            print( "Port {}:     Open".format(port))
        sock.close()

except KeyboardInterrupt:
    print( "You pressed Ctrl+C")
    sys.exit()

except socket.gaierror:
    print( 'Hostname could not be resolved. Exiting')
    sys.exit()

except socket.error:
    print( "Couldn't connect to server")
    sys.exit()

t2 = datetime.now()
total =  t2 - t1
print( 'Scanning Completed in: ', total)

但它没有用。

Enter a remote host to scan: http://www.osjajinci.com/
Traceback (most recent call last):
  File "portscanner.py", line 12, in <module>
    remoteServerIP  = socket.gethostbyname(remoteServer)
socket.gaierror: [Errno -2] Name or service not known

我正在尝试了解有关套接字的更多信息,我是begginer。我已经仔细检查了Python3代码并且找不到任何错误。

1 个答案:

答案 0 :(得分:8)

socket.gethostbyname需要主机名而不是URL。您必须提供www.osjajinci.com而不是http://www.osjajinci.com/