Python 我的端口扫描仪扫描端口的时间太长。这是我的密码,有人能帮我吗?

Python 我的端口扫描仪扫描端口的时间太长。这是我的密码,有人能帮我吗?,python,Python,这是我的密码。有人能给我解释一下如何让我的端口扫描器更快吗?我通过使用“connect.ex()”连接到ip来创建端口扫描程序,也许我应该使用另一个命令 try: for port in range(1,1000): sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) result = sock.connect_ex((remoteHost,port)) if result ==

这是我的密码。有人能给我解释一下如何让我的端口扫描器更快吗?我通过使用“connect.ex()”连接到ip来创建端口扫描程序,也许我应该使用另一个命令

try:
    for port in range(1,1000):
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        result = sock.connect_ex((remoteHost,port))
        if result == 0:
            print(colored("[+] Port {}: Open".format(port), 'green'))
            sock.close()

因此,快速浏览一下Github,我发现哪些账单本身是

具有模块的闪电般快速的多线程网络扫描框架

通过阅读,我注意到它使用而不是
connect\u ex
。但它绝对会执行多线程处理以提高性能。我倾向于使用现有的解决方案,而不是从头开始构建解决方案,除非这只是为了修补

为了加快示例的速度,您可以使用进行简单的优化


有没有理由不使用现有的端口扫描器,而该扫描器是由已经完成优化其实现工作的人构建的?最简单的更改只是将工作转移到线程中,但是(1)平衡性能和负载是一门艺术,不是一门科学,也不是真正符合规范的答案;(2)编写一个真正高性能的端口扫描器需要一系列接近操作系统的技巧,这些技巧通常需要root,在这里是非常离题的。我知道很多端口扫描器,但我尝试构建一个,因为我正在尝试了解更多。
def scan_port(port):
    try:
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        result = sock.connect_ex((remoteHost,port))
        if result == 0:
            print(colored("[+] Port {}: Open".format(port), 'green'))
            sock.close()
    except:
        pass  # you should handle this error

import multiprocessing as mp

p = mp.Pool()  # will parallelize to number of CPUs you have
p.map(scan_port, range(1, 1000))