java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 连接MQTT时报的Connection refused: connect

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

作者:程序员大龙虾

MQTT连接错误解析,重点排查防火墙配置与mosquitto.conf设置,确保端口开放与远程连接权限配置正确

错误日志

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

排查思路

  1. 首先使用ping命令看下能否ping通服务端
  2. 查看服务端防火墙是否开放连接的端口号【重点】
  3. 保证客户端连接服务端的IP地址以及端口号是否正确【请仔细看】 
  4. 其次看下MQTT服务端的配置文件是否开放允许远程连接等【重重点】

我报这个错的原因是MQTT的配置文件没有设置允许远程连接导致的,如果你也是因为配置文件导致的Connection refused: connect错误,那么请往下看:

没有找到这个文件,你可以看下是否有一个mosquitto.conf.example文件,拷贝一个新的改成mosquitto.conf即可,如果两个文件都没有那就只能新建一个了,配置的话手动添加。

设置允许所有ip连接  

假如你没有添加上面这个配置,那么会报下面这个错误:

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]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文