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

同一机器内客户端与服务器Connection refused[Errno111]问题排查

排查「Connection refused」问题的几个关键点

这问题我之前调试socket程序时也碰到过好几次,咱们一步步拆解可能的原因:

  • 先确认客户端的连接目标完全正确
    别小看这个基础点!很多时候是客户端代码里的IP/端口写错了——比如服务器明明监听7779,客户端却写成7778;或者客户端连接的是'192.168.x.x'而非本地回环的'127.0.0.1'/'localhost'。一定要检查客户端connect()方法的参数,确保是('127.0.0.1', 7779)或者对应正确的本地地址。

  • 验证服务器是否真正完成了监听绑定
    虽然服务器打印了「Listening in: 0.0.0.0:7779」,但有可能是代码逻辑顺序错了——比如先输出了提示,再执行bind()和listen(),甚至这两个关键步骤没执行/执行出错却没捕获异常。对照你的服务器代码,确保流程是:

    import socket
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 必须正确绑定地址和端口
    server.bind(('0.0.0.0', 7779))
    # 启动监听队列
    server.listen(5)
    # 确认监听成功后再输出提示
    print("Listening in: 0.0.0.0:7779")
    # 后续的accept循环
    while True:
        conn, addr = server.accept()
        # 处理连接逻辑
    

    另外可以用命令确认服务器进程是否真的在监听端口:

    • Linux/macOS:lsof -i :7779 或 netstat -tulpn | grep 7779
    • Windows:netstat -ano | findstr :7779
  • 检查客户端的连接时机
    会不会是服务器还没完成监听初始化,客户端就急着发起连接了?比如服务器启动后有其他耗时的初始化操作,导致listen()还没执行,客户端就调用了connect()。可以试试手动等服务器输出监听提示后,再启动客户端;或者调整服务器代码,确保listen()执行完成后再打印提示信息。

  • 排除本地网络策略干扰
    虽然是本地连接,但某些系统的防火墙、安全软件可能会拦截自研程序之间的网络请求,允许nc但阻止你的Python程序。可以临时关闭防火墙测试,或者检查系统的应用网络权限设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:04:06