多MQTT客户端连接test.mosquitto.org时遭遇ConnectionRefusedError的问题求助
多MQTT客户端连接test.mosquitto.org时遭遇ConnectionRefusedError的问题求助
大家好,我是完全刚接触MQTT协议、Python和paho-mqtt库的新手。我现在想要实现的是两个发布者向同一个主题发送消息,同时一个订阅者监听该主题的所有消息。之前运行订阅者和第一个发布者的时候一切正常,但启动第二个发布者时,就遇到了连接被拒绝的错误,具体报错信息如下:
Traceback (most recent call last): File "C:\...\MQTT\DigitalTwin2.py", line 14, in <module> dt_client.connect("test.mosquitto.org", 1883, 60) File "C:\...\Python\Python39\lib\site-packages\paho\mqtt\client.py", line 914, in connect return self.reconnect() File "C:\...\Python\Python39\lib\site-packages\paho\mqtt\client.py", line 1044, in reconnect sock = self._create_socket_connection() File "C:\...\Python\Python39\lib\site-packages\paho\mqtt\client.py", line 3685, in _create_socket_connection return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source) File "C:\...\Python\Python39\lib\socket.py", line 843, in create_connection raise err File "C:\...\Python\Python39\lib\socket.py", line 831, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
我的Python代码如下:
两个发布者的代码几乎完全一致,只有客户端名称不同,以下是发布者的通用代码:
import paho.mqtt.client as mqtt from random import uniform import time def on_dt_connect(client, userdata, flags, rc): if rc == 0: print("Connected to Digital Twin-1 with result code 0") else: print("Connection to Digital Twin-1 failed with result code " + str(rc)) dt_client = mqtt.Client("Digital Twin-1") # 第二个发布者这里是"Digital Twin-2" dt_client.on_connect = on_dt_connect dt_client.connect("test.mosquitto.org", 1883, 60) while True: randNumber = uniform(3.0, 4.0) randNumber = round(randNumber, 4) dt_client.publish("topic", "Digital Twin-1: " + str(randNumber)) # 第二个发布者这里对应改成Digital Twin-2 print("..." + str(randNumber) + "...") time.sleep(1)
订阅者代码:
import paho.mqtt.client as mqtt import time def on_sd_connect(client, userdata, flags, rc): if rc == 0: print("Connected to Smart Device with result code 0") else: print("Connection to Smart Device failed with result code " + str(rc)) def on_sd_message(client, userdata, message): print("...", str(message.payload.decode("utf-8"))) device_client = mqtt.Client("Smart Device") device_client.on_connect = on_sd_connect device_client.connect("test.mosquitto.org", 1883, 60) device_client.loop_start() device_client.subscribe("topic") device_client.on_message = on_sd_message time.sleep(30) device_client.loop_stop()
我已经查过一些相关问题,但没找到针对三个客户端同时连接场景的解决方案,另外我之前还做过这些操作:
- 在Windows Defender里添加了新的规则
- 使用MQTT Explorer时设置过密码,后来用密码连不上就关掉了软件,还删掉了mosquitto文件夹里的密码文件
- 整个流程是跟着YouTube视频学习操作的
希望大家能帮我看看问题出在哪里,谢谢!
备注:内容来源于stack exchange,提问作者Betül Azakoğlu




