商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

  发布于2026-05-29 阅读(0)

扫一扫,手机访问

错误日志

org.eclipse.paho.client.mqttv3.MqttException: 无法连接至服务器

at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.ja va:80) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.ja va:724) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

at ja va.lang.Thread.run(Thread.ja va:750) ~[na:1.8.0_333]

Caused by: ja va.net.ConnectException: Connection refused: connect

at ja va.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_333]

at ja va.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.ja va:81) ~[na:1.8.0_333]

at ja va.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.ja va:476) ~[na:1.8.0_333]

at ja va.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.ja va:218) ~[na:1.8.0_333]

at ja va.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.ja va:200) ~[na:1.8.0_333]

at ja va.net.PlainSocketImpl.connect(PlainSocketImpl.ja va:162) ~[na:1.8.0_333]

at ja va.net.SocksSocketImpl.connect(SocksSocketImpl.ja va:394) ~[na:1.8.0_333]

at ja va.net.Socket.connect(Socket.ja va:606) ~[na:1.8.0_333]

at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.ja va:74) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

... 2 common frames omitted

排查思路

  1. 首先用ping命令试一下,能不能正常ping通服务端。
  2. 检查服务端防火墙是否开放了连接所用的端口号。【重点】
  3. 确认客户端连接服务端的IP地址和端口号没有写错。【仔细核对】
  4. 再看MQTT服务端的配置文件,是否允许远程连接。【重中之重】

报这个错的原因,本质上是MQTT的配置文件没有开启远程连接导致的。如果你也遇到同样的Connection refused: connect,并且确认是配置问题,那接下来的操作就是关键。

  • 修改 mosquitto.conf

如果你在安装目录下找不到这个文件,可以留意一下有没有 mosquitto.conf.example 这个模板文件——把它复制一份并重命名为 mosquitto.conf 即可。如果两个文件都没有,那就只能手动新建一个,把必要的配置项加进去。

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

  • 修改下面两张图中标注的位置

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

设置允许所有IP连接:

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

  • 接下来是匿名连接权限。本地开发环境可以设为 true,线上环境则务必要设为 false
  • 一旦配置了 allow_anonymous false,就必须使用账户密码进行连接了。

如果没有添加匿名配置,或者用户名密码不正确,就会报下面这个错误:

org.eclipse.paho.client.mqttv3.MqttSecurityException: 无权连接

at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.ja va:28) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.ja va:1053) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.ja va:151) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

at ja va.lang.Thread.run(Thread.ja va:750) ~[na:1.8.0_333]

总结

整个排查过程并不复杂:先从网络连通性入手,然后看防火墙、IP端口、最后聚焦到配置文件。大部分情况下,把 mosquitto.conf 中的远程访问和匿名权限搞定,连接问题就能迎刃而解。希望这个排查流程能帮你快速定位问题。

本文转载于:https://www.jb51.net/program/364820rge.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注