使用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 條評論

發布
問題