Python 循环端口扫描脚本在端口 80 上停止且无错误

Python 循环端口扫描脚本在端口 80 上停止且无错误

我有一个扫描端口的 Python 脚本。我扫描了一台有 2 个开放端口(22 和 80)的主机。当我的脚本到达端口 22 时,我收到一条消息,上面写着“打开端口 + 正在运行的服务”。然后脚本继续... 当它到达端口 80 时,它就卡住了。我不知道为什么,我没有收到错误。

有人能帮我检查一下我的代码吗,因为我找不到问题所在。谢谢

    for port in range(1,82):
            s = socket.socket()
            result = s.connect_ex((ip, port))
            s.close()
            if result == 0:
                    s = socket.socket()
                    s.connect((ip, port))
                    data = str(s.recv(1024))
                    s.close()
                    print ("Port {}: Open  --  ".format(port) + (data))
            else:
                    print ("Port {}: Closed".format(port))

答案1

当目标主机/端口未打开时,它必须等待连接超时。有时路由器或主机会快速返回拒绝连接,但默认情况下,大多数服务都配置为“隐身”且不会以任何方式做出响应。

您可以使用以下方法解决此问题设置超时Python 中套接字上的函数:

s.setTimeout(1.0)

它接受秒数,但也可以是像0.5500ms 这样的浮点数。

相关内容