c mqtt客戶端 mqtt應用於程序間通訊

2021-10-12 03:31:34 字數 2590 閱讀 6298

這一篇我們就來分享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.cmosquitto/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連...