You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Port Scanner无法扫描求助:Python脚本无输出且持续加载

端口扫描脚本无输出且持续加载的排查方案
  • 超时设置缺失:Python socket模块的connect()方法默认没有超时限制,一旦目标端口无响应,程序会一直阻塞等待连接结果,这就是你看到的持续加载状态。解决办法是给socket实例设置超时,比如在创建socket后添加s.settimeout(1)(单位秒,可根据网络情况调整),或者使用connect_ex()方法配合超时,避免无限等待。

  • 代码顺序/范围问题:检查你的代码结构,确保"Checking port"的打印语句在try块外面、socket连接操作之前执行,不然连接卡住的话提示根本没机会输出。另外确认端口循环范围是否正确,比如要扫描50-80(包含80),得用range(50, 81),range(50,80)只会扫描到79端口。如果把整个循环放在单个try-except里,第一个端口卡住会导致后续所有端口都无法处理。

  • VM网络/防火墙问题:先确认Oracle VM里的目标主机和你的开发主机在同一网段,能正常ping通。另外检查目标主机的防火墙规则,是否拦截了50-80端口的TCP连接请求,防火墙的静默拦截会让socket连接一直处于等待状态。

  • 示例修正代码:

    import socket
    
    target_ip = "你的目标IP地址"
    # 扫描50到80端口(包含80)
    for port in range(50, 81):
        print(f"Checking port {port}")
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # 设置1秒超时,避免无限阻塞
            sock.settimeout(1)
            # connect_ex返回0表示端口开放,非0为关闭/无法连接
            conn_status = sock.connect_ex((target_ip, port))
            if conn_status == 0:
                print(f"Port {port} is OPEN")
            sock.close()
        except Exception as err:
            print(f"Port {port} error: {str(err)}")
    

内容的提问来源于stack exchange,提问作者Chitransh Mathur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:32:38