MQTT協議學習 Mosquitto安裝 測試

2021-07-11 19:12:26 字數 2258 閱讀 2096

1 安裝和常見問題

1.1 安裝測試環境

1.1 安裝

截止2023年5月,最新版本為mosquitto-1.4.8

# 新建mosquitto目錄並進入目錄

mkdir mosquitto

cd mosquitto

wget 

# 解壓

tar zxfv mosquitto-1.4.8.tar.gz

# 進入目錄

cd mosquitto-1.4.8

# 編譯

make

# 安裝

sudo make install

1.2 常見問題

編譯找不到openssl/ssl.h

【解決方法】——安裝openssl

sudo apt-get install libssl-dev

編譯過程找不到ares.h

sudo apt-get install libc-ares-dev

編譯過程找不到uuid/uuid.h

sudo apt-get install uuid-dev

使用過程中找不到libmosquitto.so.1

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

【解決方法1-推薦】

注:簡單說就是執行

sudo /sbin/ldconfig

如果不行,就先執行

echo /usr/local/lib > /etc/ld.so.conf.d/local.conf

【解決方法2】——修改libmosquitto.so位置

# 建立鏈結

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

# 更新動態鏈結庫

sudo ldconfig

make: g++:命令未找到

【解決方法】

# 安裝g++編譯器

sudo apt-get install g++

2 簡單測試

乙個完整的mqtt示例包括乙個**器,乙個發布者和乙個訂閱者。測試分為以下幾個步驟:

啟動服務mosquitto。

訂閱者通過mosquitto_sub訂閱指定主題的訊息。

發布者通過mosquitto_pub發布指定主題的訊息。

**伺服器把該主題的訊息推送到訂閱者。

【測試說明】

在本例中,發布者、**和訂閱者均為localhost,但是在實際的情況下三種並不是同乙個裝置,在mosquitto中可通過-h(--host)設定主機名稱(hostname)。為了實現這個簡單的測試案例,需要在linux中開啟三個控制台,分別代表**伺服器、發布者和訂閱者。

圖1 示例

2.1 乙個控制台 - 啟動**服務

mosquitto -v

【-v】列印更多的除錯資訊

2.2乙個控制台 -訂閱主題

mosquitto_sub -v -t test

【-t】指定主題,此處為test

【-v】列印更多的除錯資訊

2.3乙個控制台 -發布內容

mosquitto_pub -t test  -m test123

【-t】指定主題 test

【-m】指定訊息內容 test_message

2.4 執行結果

當發布者推送訊息之後,訂閱者獲得以下內容

而**伺服器控制台中會出現——連線、訊息發布和心跳等除錯資訊。通過**伺服器的除錯輸出可以對mqtt協議的相關過程有所了解。

圖2 **伺服器除錯輸出

3 參考內容

MQTT協議學習

mqtt協議是目前物聯網最主要的協議,它的設計主要是運用於,低頻寬 低網速 差網路環境能夠保證資料的正常傳輸。mqtt協議基於tcp ip協議,運用訂閱發布模式,解除應用之間的耦合關係。客戶端與客戶端之間只需要知道伺服器位置。就可以傳輸資料 獲取資料。具體的協議和過程可以檢視這個中文幫助文件。裡面詳...

MQTT協議 MQTT協議簡介

mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...

MQTT協議 MQTT協議解析

協議就是通訊雙方的乙個約定,即,表示第1位傳輸的什麼 第2位傳輸的什麼 在mqtt協議中,乙個mqtt資料報由 固定頭 fixed header 可變頭 variable header 訊息體 payload 三部分構成。mqtt 資料報結構 固定頭存在於所有mqtt資料報中,其結構如下 bit76...