使用 MQTT 的 demo 连接服务器失败的情况分析

发布于 2025-12-26 13: 59: 44

wm_demo_mqtt. c 使用的是 src/app/libemqtt. c 里的实现, 使用 wm_demo_mqtt. c 测试 mqtt 连接的过程中, 如果遇到 mqtt 连接服务器失败的情况, 需要检查以下几个方面.
1, 检查 CLIENT_ID 和 USER_NAME, PASSWORD 这几个参数的长度是否超出了代码定义最大长度, 在 libemqtt. h 中, mqtt_broker_handler_t 里定义了各个参数的内存大小, 分别为 50, 24, 24, 再减去最后一个字节的字符串结束字符. 如果使用的参数超出了这个长度, 需要将对应的定义值改大.
image. png
image. png

2, 确认下服务器和客户端的版本号是否一致, 常见的版本有 V3. 1, V3. 1. 1, V5. 0, libemqtt 对应的版本是早期的 V3. 1 版本, 如果服务器使用的是 V3. 1. 1 版本, 可以在 V3. 1 版本上简单修改, 就可以使用了. 主要修改的地方如下: MQTT 3. 1 中使用 "MQIsdp"
作为协议名称, 而 3. 1. 1 改为 "MQTT" , 更标准化. 左边是原来的 V3. 1, 右边是 V3. 1. 1, 红色部分是差异的地方.
image. png

以上修改, 如果使用的是 make 命令编译, 需要先执行 make lib 再执行 make, 如果使用的是 CDK 编译, 直接 build 就可以. 确保修改的地方被编译到.

0 条评论

发布
问题