如何获取MQTT Broker服务器IP?Mosquitto应用连接遭拒求助
解决Mosquitto Broker局域网连接及IP获取问题
你的Android端代码片段:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = MqttClient("tcp://(how can i get address!!!!!!!!)","test",MemoryPersistence()) client.connect() }
问题说明
你搭建基于Mosquitto Broker的MQTT应用时,遇到以下问题:
- 无法获取Broker的有效IP地址,使用当前WiFi地址连接被拒绝
- 不想修改
mosquitto.conf配置文件 - 需要验证Mosquitto订阅与Android端发布功能是否正常
解决方案
1. 确认Mosquitto监听状态(关键)
默认Mosquitto仅监听本地回环地址127.0.0.1,导致局域网内的Android设备无法连接。你可以通过终端命令查看监听情况:
- Windows:
netstat -an | findstr "1883" - Linux/macOS:
netstat -an | grep 1883
如果输出仅显示127.0.0.1:1883,说明Broker只允许本地连接,需调整启动方式。
2. 临时启动Mosquitto监听所有网卡(无需改配置)
关闭正在运行的Mosquitto服务,在终端执行以下命令启动Broker,使其监听所有网卡的1883端口:
mosquitto -c mosquitto.conf -p 1883 -b 0.0.0.0
0.0.0.0表示监听所有可用网卡,这样局域网内设备就能通过Broker所在设备的IP连接。
3. 获取Broker所在设备的局域网IP
- Windows:打开终端执行
ipconfig,找到当前WiFi适配器的IPv4地址(比如192.168.1.105) - Linux/macOS:执行
ifconfig或ip addr,找到WiFi网络对应的IP地址
将这个IP替换到代码中,修改后的MQTT客户端初始化代码:
val client = MqttClient("tcp://192.168.1.105:1883","test",MemoryPersistence())
4. 验证订阅与发布功能
- 电脑端订阅主题:打开终端执行
mosquitto_sub -t "mqtt/test" -v - Android端发布消息:在连接成功后添加发布代码
// 确保连接成功后执行 if (client.isConnected) { val msg = MqttMessage("Android测试消息".toByteArray()) client.publish("mqtt/test", msg) }
此时查看电脑端的订阅终端,若能收到Android发送的消息,说明功能正常。
内容的提问来源于stack exchange,提问作者yhlee2
相关产品推荐
相关产品推荐

