固定報頭包含了報文型別,重發標誌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...