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,再减去最后一个字节的字符串结束字符。如果使用的参数超出了这个长度,需要将对应的定义值改大。

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,红色部分是差异的地方。
以上修改,如果使用的是make命令编译,需要先执行make lib再执行make,如果使用的是CDK编译,直接build就可以。确保修改的地方被编译到。