当MQTT客户端出现"无法连接至服务器"错误时,往往与网络配置或服务端设置相关。本文将详细分析错误原因并提供解决方案。
org.eclipse.paho.client.mqttv3.MqttException: 无法连接至服务器
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_333]
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_333]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_333]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_333]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_333]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_333]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_333]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_333]
at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_333]
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
... 2 common frames omitted
本文遇到的错误是由于MQTT配置未开放远程连接所致,以下是具体的解决方法:
若找不到该文件,可尝试查找mosquitto.conf.example文件,复制后重命名。若无则需新建文件并手动添加配置。


需要设置允许所有IP地址连接

本地开发环境可设为true,生产环境建议设为false
配置allow_anonymous为false后,连接时需提供账户密码
若未正确配置该参数,可能会出现以下错误:
org.eclipse.paho.client.mqttv3.MqttSecurityException: 无权连接
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:1053) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:151) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_333]
通过检查网络连接、修改配置文件等步骤,可以有效解决MQTT连接拒绝问题。合理的安全设置对系统稳定性至关重要。