如何在Android Studio模拟器中连接本地Mosquitto MQTT服务器
问题根因
当前你的Mosquitto服务仅绑定了本地回环地址(127.0.0.1、IPv6回环地址::1),仅支持本机内部访问,无法接收来自Android模拟器等外部设备的连接请求。
解决步骤
1. 修改Mosquitto配置放开监听限制
- 打开Mosquitto安装目录下的
mosquitto.conf配置文件 - 找到对应配置项,去掉注释并修改为如下内容:
# 绑定所有网卡的1883端口,也可直接指定你的本机局域网IP 192.168.0.5 listener 1883 0.0.0.0 # 排查阶段先允许匿名访问,避免权限问题导致连接失败 allow_anonymous true - 保存配置后重启Mosquitto服务,可通过cmd执行命令
net stop mosquitto && net start mosquitto完成重启。
2. 验证监听配置生效
重启服务后在cmd执行netstat -ano | findstr 1883,确认返回结果中出现TCP 0.0.0.0:1883或者TCP 192.168.0.5:1883的监听记录,说明绑定配置已生效。
3. 配置Windows防火墙放行端口
- 打开Windows Defender防火墙→高级设置→入站规则→新建规则
- 规则类型选择「端口」,下一步后选择TCP,特定本地端口填写
1883,继续下一步 - 选择「允许连接」,下一步后根据你的网络环境勾选适用的网络类型(建议临时全选域、专用、公网),下一步
- 规则名称填写
Mosquitto 1883端口放行,点击完成即可。
4. 调整Android端配置(可选)
如果仍连接失败,可先调整连接参数排查问题:
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions(); mqttConnectOptions.setAutomaticReconnect(true); mqttConnectOptions.setCleanSession(true); // 排查阶段开启干净会话,避免历史会话冲突 mqttConnectOptions.setConnectionTimeout(10); // 设置10秒连接超时 mqttConnectOptions.setKeepAliveInterval(20);
同时确认AndroidManifest.xml中已添加必要的网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
内容的提问来源于stack exchange,提问作者susan_55
相关产品推荐
相关产品推荐

