python MQTT paho客户端连接超时错误

f5emj3cl  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(435)

我正在我的笔记本电脑上运行MQTT Mosquitto broker。然后我尝试连接2个Paho MQTT客户端到它:1)从Android手机使用Java Paho和2)从Raspberry Pi使用Python Paho。
从Android连接是完美的。没问题
然而,树莓出于某种原因无法连接。相反,client.connect方法阻塞,过了一段时间我收到以下消息:

Traceback (most recent call last):
  File "sensorsClient.py", line 28, in <module>
    client.connect(mqttServer, 1883)
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 700, in connect
    return self.reconnect()
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 822, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 110] Connection timed out

连接代码如下:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("$SYS/#")

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

mqttServer = 'zzz.xxx.ccc.qqq' # Public IP of the laptop

client = mqtt.Client("", True, None, mqtt.MQTTv31)
client.on_connect = on_connect
client.on_message = on_message

client.connect(mqttServer, 1883)
client.loop_start()

一切都是通过WIFI在一个网络内完成的。没有移动的数据。谁能解释一下为什么会这样?

atmip9wb

atmip9wb1#

您可以运行的第一个检查之一是检查您的代理配置(如果是您自己的代理,否则请向您的供应商询问凭据),并查看您是否设置了任何用户名/密码用于连接。最有可能的是你的客户端连接超时的问题。
如果是这种情况,您只需要在客户端配置中设置用户名/密码,如下所示:
client.username_pw_set("username_on_broker", "password_on_broker")
另外,我建议使用urlparse.urlparse("broker url")来清理/标准化您的经纪人URL
如果这对你没有帮助,一定要联系我。

相关问题