普通网友 2025-08-29 07:30 采纳率: 98.8%
浏览 4
已采纳

Socket connect报错111常见原因有哪些?

Socket编程中,connect()函数返回错误111(Connection refused)是常见的网络通信问题。该错误通常表示客户端无法成功连接到指定的服务器端口。常见原因包括:1)目标服务器未启动或未监听指定端口;2)服务器IP地址或端口号配置错误;3)防火墙或安全策略阻止连接;4)网络不通或路由问题导致无法到达目标主机;5)服务器连接队列已满,无法接受新连接。排查时应从网络连通性、服务状态、端口监听情况及防火墙设置等方面逐步检查,以定位具体原因并解决连接问题。
  • 写回答

1条回答 默认 最新

  • 地理数据社 2025-08-29 09:49
    关注
    1. 服务器端问题(最常见)
      这是导致 ECONNREFUSED 的最主要原因。问题出在客户端想要连接的服务器IP和端口上。

    目标服务根本没有运行:

    场景:你想连接一台机器的 3306 端口(MySQL),但该机器上根本没有安装MySQL,或者MySQL服务没有启动。

    排查:在服务器上使用 netstat -tulnp | grep <端口号> (Linux) 或 netstat -ano | findstr :<端口号> (Windows) 命令,检查是否有进程在监听目标端口。

    服务运行了,但监听的IP地址不对:

    场景:服务可能只配置了监听 127.0.0.1 (localhost) 或某个特定网卡的IP。这意味着只有本机或特定网络能连接它。从外部客户端连接就会失败。

    排查:同样使用 netstat 命令,看监听地址是 0.0.0.0(所有网卡)、127.0.0.1(仅本机)还是某个特定IP。

    目标端口被防火墙/安全组拦截:

    场景:服务器上的防火墙(如iptables, firewalld)或云服务商(阿里云、AWS、腾讯云等)的安全组规则阻止了外部对该端口的访问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月29日