使用Python Paho-MQTT遇ConnectionRefusedError: [WinError 10061]错误求助
解决MQTT连接被拒绝(WinError 10061)的方法
为啥会出这错?
这个错误说白了就是你电脑上的localhost:1883端口压根没跑MQTT broker服务,或者服务没监听这个端口,所以连接请求直接被打回来了。
一步步解决
先装个MQTT broker并启动
常用的开源broker有EMQX、Mosquitto,得先装上其中一个:- 要是用Mosquitto:装完找到安装目录(比如
C:\Program Files\mosquitto),开命令行跑mosquitto.exe就能启动,或者去系统服务列表里找到Mosquitto服务手动开启。 - 要是用EMQX:装完通过启动脚本或者服务管理工具把它开起来就行。
- 要是用Mosquitto:装完找到安装目录(比如
核对broker的监听端口
MQTT默认端口是1883,但要是改了配置文件,得确保端口和你脚本里的一致。比如Mosquitto的mosquitto.conf里的listener项,得确认是1883而且没被注释掉。看看1883端口有没有被占
开命令提示符,敲netstat -ano | findstr :1883,要是没输出,说明这端口没程序监听;要是有其他进程占了,要么停掉那个进程,要么改broker的监听端口,同时把脚本里的端口号也改了。给脚本加个连接反馈(更方便排查)
你原来的脚本只调用了connect,加个回调和循环能清楚看到连接状态:import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): if rc == 0: print("连接成功") else: print(f"连接失败,错误码: {rc}") client = mqtt.Client("Clientus") client.on_connect = on_connect client.connect("localhost", 1883, 60) client.loop_forever()错误码能帮你进一步定位问题,比如rc=3是协议版本不匹配,rc=5是用户名密码错了之类的。
检查防火墙
Windows防火墙可能把1883端口的连接挡住了,要么给MQTT broker程序加个防火墙允许规则,要么临时关了防火墙试试能不能连上。
内容的提问来源于stack exchange,提问作者Marwans200
相关产品推荐
相关产品推荐

