代码之家  ›  专栏  ›  技术社区  ›  Antas Sharma

我应该为每个端口创建一个新实例吗?

  •  0
  • Antas Sharma  · 技术社区  · 2 年前

    我正在使用python套接字库制作一个端口扫描仪,它基本上试图连接到端口上的IP。如果它能够连接,则端口显示为打开,否则,它显示端口为关闭。

    请注意,这只是一个基本的端口扫描仪,我仍在努力。

    所以,我在想,为什么我不在for循环之外启动套接字实例,因为我的代码每次都在创建一个新实例

    但是,当我尝试的时候,它说每个港口都关闭了

    这是我在for循环之前使用的代码段-

    socket_instance = socket.socket()  
    socket_instance.settimeout(0.5) 
    

    (我不知道python中的套接字编程) 以下是正常工作的代码的主要部分-

    def scan_ports(ip_address,port):
          try:
            socket_instance.connect((ip_address, port))
            print("[+] Port "+str(port)+" is open")
            socket_instance.close()
          except:
            # print("[-] Port "+str(port)+" closed") 
            pass
    
    for port in range(1,501):
        socket_instance = socket.socket()  
        socket_instance.settimeout(0.5) 
        scan_ports(ip_address,port)
    

    所以我的问题是:我是否必须为每个端口创建一个套接字函数的新实例?

    我不能对每个端口重复使用同一个实例吗?

    0 回复  |  直到 2 年前