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

Python端口扫描脚本运行报错ConnectionRefusedError求助

Python端口扫描脚本ConnectionRefusedError问题说明及示例
  • ConnectionRefusedError: [Errno 111] Connection refused不是脚本bug,这是扫描过程中的正常现象——说明目标IP的对应端口没有开放,或者目标主机主动拒绝了连接请求。很多开发者都写过类似的端口扫描脚本,下面给你一个简化的可直接运行的版本:
import socket

def port_scan(target_ip, start_port, end_port):
    # 遍历指定端口范围
    for port in range(start_port, end_port + 1):
        try:
            # 创建TCP套接字
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(1)  # 设置1秒超时,避免无响应时卡住
            # 用connect_ex替代connect,返回错误码而非直接抛异常,更适合扫描场景
            conn_result = s.connect_ex((target_ip, port))
            if conn_result == 0:
                print(f"端口 {port} 已开放")
            s.close()
        except Exception as e:
            print(f"扫描端口 {port} 时发生异常: {str(e)}")

if __name__ == "__main__":
    target_ip = input("输入目标IP地址: ")
    start_port = int(input("输入起始端口: "))
    end_port = int(input("输入结束端口: "))
    port_scan(target_ip, start_port, end_port)
  • 为什么用connect_ex而不是connect?因为connect在端口未开放时会直接抛出异常,需要额外捕获;而connect_ex会返回错误码,0表示连接成功,其他值对应不同错误,这样能更清晰区分“端口未开放”和“其他异常”,减少不必要的异常信息输出。

  • 你原来的脚本用connect遇到的错误,本质就是端口没开放,属于扫描的正常结果,不是脚本故障。如果想避免这类异常信息刷屏,就改用connect_ex来处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:02