mqtt發布json資料 mqtt應用於程序間通訊

2021-10-14 12:18:56 字數 2518 閱讀 1185

這一篇我們就來分享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程式:

執行這兩個程式會報錯:

./json_parse: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: no such file or directory

./json_print: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: no such file or directory

這是因為 不能找到共享庫檔案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核心空間與使用者空間?

C 整合MQTT 發布 訂閱

服務端 服務端是乙個控制台應用 using mqttnet using mqttnet.core.adapter using mqttnet.core.diagnostics using mqttnet.core.protocol using mqttnet.core.server using sy...

python 連線mqtt發布和訂閱資訊

pip install paho mqttimport paho.mqtt.client as mqtt import json import time host 127.0.0.1 mqtt伺服器位址 port 1883 client id 101 客戶端id,自己設定 同時訂閱多個主題方式使用 ...

discuz資料表發布為json格式

測試一下以json格式傳送資料到瀏覽器。從國家統計局查詢2016年9月份主要工業產品產量,pre 工業產品產量.xls,或者轉換後的csv檔案,用小貓統計匯入discuz後台資料庫。裡面有個本月字段,拼音首字母為 by 與sql保留字重合,改為 本月1 匯入後資料表內容 在discuz根目錄中,建立...