MQTT協議學習 二 PUBLISH報文構建

2021-10-05 16:21:47 字數 1700 閱讀 9197

固定報頭包含了報文型別,重發標誌dup,服務質量qos,保留標誌retain

這兒我們不重發,服務質量為00(qos0),無需伺服器保留

則報文為:

30 xx
其中xx為我們後面報文的長度

publish的可變報頭包含了主題名和報文識別符號,

描述byte1

長度 msb

byte2

長度lsb

byte3…

n個主題位元組

byte…

報文識別符號

其中長度為主題位元組+報文識別符號的長度。

對於qos0的報文來說,只有主題名,沒有報文識別符號。

假設我們發布的主題為

testpublish
則對應的報文為00 0b為主題長度:

[

000b]

7465

7374

7075

626c 69

7368

對於publish報文,有效載荷不需要長度,直接跟有效載荷即可。

有效載荷的長度即剩餘長度-可變報文長度

如我們要發布

"hello world!"
報文。

則有效載荷為:

22

4865

6c 6c 6f

2057

6f72

6c 64

2122

則我們最終構建的publish報文為

30 xx [

000b]

7465

7374

7075

626c 69

7368[22

4865

6c 6c 6f

2057

6f72

6c 64

2122

]

xx的長度是27,對應的hex值是1b

所以最終的發布報文時:

30

1b 00

0b 74

6573

7470

7562

6c 69

7368

2248

656c 6c 6f

2057

6f72

6c 64

2122

測試使用串列埠透傳+emq x伺服器

我們在emq x伺服器上,新建乙個賬號,用來訂閱該主題,看我們是否能夠使用我們構建的報文成功發布訊息。

我們使用透傳工具,登入我們之前建立的0000000000使用者,使用mqtt.fx登入另外乙個賬號,並訂閱testpublish主題。

可以看到,當我們使用串列埠透傳publish資料報後,mqtt.fx的另外乙個使用者正常收到了我們發布的報文資訊。

至此,我們根據mqtt協議,完成了publish報文的構建。

下一步我們需要使用subscribe報文進行主題的訂閱。

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...