找不到打开的端口 python

Can't find open ports python

我正在尝试在 python 中创建一个简单的端口扫描器 - 它会尝试查看端口 0-10000 是否打开,然后将它们附加到一个数组中。但是,即使我打开了一个端口,它仍然不识别端口是打开的。

谢谢

代码:

import socket
import threading

ip = "127.0.0.1"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket.AF_INET, socket.SOCK_STREAM
open_ports = []
def porttry(ip, port):
    try:
        s.connect((ip, port))
        print("Port opened on %d" % port)
        open_ports.append(port)
        return True
    except:

        return None

for port in range(0, 10000):
    threading.Thread(target=porttry,args=(ip,port)).start()
    if port%100==0:
        print(port) 

要使此代码正常工作,您需要为每个连接(每个线程)单独创建套接字。

以下作品:

import socket
import threading

ip = "127.0.0.1"
open_ports = []
def porttry(ip, port):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, port))
        print("Port opened on %d" % port)
        open_ports.append(port)
        s.close()
        return True
    except:
        return False

for port in range(0, 10000):
    threading.Thread(target=porttry, args=(ip,port)).start()
    if port % 100 == 0:
        print(port)

它检测打开的端口,例如 nc -l 1777