這一篇我們就來分享mqtt應用於程序間通訊的例項。我們沿用往期文章《例說嵌入式實用知識之json資料》的綜合demo來改造改造。那個綜合demo的功能是這樣子的:
這是以socket來作為程序間通訊的方式,並且這個demo是基於windows寫的,需要包含windows特定的標頭檔案。
本篇筆記我們把上面這個綜合demo改為:
我們用mqtt來作為程序間通訊的方式,在linux下程序測試。
先貼**:
「json_print.c:」
左右滑動檢視全部**》
「json_parse.c:」
左右滑動檢視全部**》
1、編譯生成json_parse、json_print程式:
左右滑動檢視全部**》
gcc cjson.c json_parse.c -l ../mosquitto/build/lib -lmosquitto -o json_parse
gcc cjson.c json_print.c -l ../mosquitto/build/lib -lmosquitto -o json_print
這裡用到鏈結動態庫的方式生成可執行程式。關於動態鏈結與靜態鏈結,可檢視往期筆記:《靜態鏈結與動態鏈結補充(linux)》、《什麼是動態鏈結與靜態鏈結?》。
2、執行json_parse、json_print程式:
執行這兩個程式會報錯:
這是因為 不能找到共享庫檔案libmosquitto.so.1
,載入失敗。
因為一般情況下linux會在/usr/lib
路徑中搜尋需要用到的庫,而libmosquitto.so.1
庫並不在這個路徑下。
解決方法有兩種:一種就是把這個檔案拷貝至/usr/lib
路徑下,但是一般不允許這樣做,一般使用者也不允許往這個路徑裡拷貝東西。另一種就是把libmosquitto.so.1
庫所在路徑增加為動態庫的搜尋路徑,命令為:
左右滑動檢視全部**》
export ld_library_path=../mosquitto/build/lib:$ld_library_path
按照上訴方法新增動態庫搜尋路徑之後就可以正常執行這兩個程式:
parseresult.txt文字裡得到:
實驗成功!
以上就是本次的分享,**寫得比較倉促,如有錯誤,歡迎指出,謝謝!由於準備demo花了挺多時間,包括注釋也寫了很多。
所以本篇文章就不做過多的說明,感興趣的朋友可以結合本篇文章的demo及mosquitto/client/pub_client.c
、mosquitto/client/sub_client.c
這兩個原始檔。
最近**人有點多,兩個群都以加滿,現建③群,感興趣可自行加入:
簡單認識認識mqtt及mosquitto
什麼是linux核心空間與使用者空間?
mqtt發布json資料 mqtt應用於程序間通訊
這一篇我們就來分享mqtt應用於程序間通訊的例項。我們沿用往期文章 例說嵌入式實用知識之json資料 的綜合demo來改造改造。那個綜合demo的功能是這樣子的 這是以socket來作為程序間通訊的方式,並且這個demo是基於windows寫的,需要包含windows特定的標頭檔案。本篇筆記我們把上...
MQTT客戶端移植C語言
首先說明一下,下面demo是在linux上跑的,展現了嵌入式mqtt客戶端使用的一般流程,其核心就是把一些資料按mqtt協議打包好,再通過socket傳送到伺服器,你也可以移植到微控制器上,比如stm32,前提是能夠連線到服務通訊,一般wifi模組例如esp8266,內建了tcp ip協議棧,微控制...
MQTT 客戶端應用及常見問題(C )
最近因為工作需要,需要使用c 語言編寫乙個通過mqtt協議 上傳資料到雲端的工具。因為之前沒有用過mqtt,所以 使用的時候遇到很多問題.下面將會把我遇到的問題一一解釋。1.引用原始碼庫位址 2.說明 3.使用後遇到的問題 當網路中斷後,mqtt 程式有時候不會自動重連。解決方案 新增監控mqtt連...