You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:55:28