背景
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基于發布/訂閱(publish/subscribe)模式的“輕量級”通訊協議,該協議構建于TCP/IP協議上,由IBM在1999年發布。MQTT最大優點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用等方面有較廣泛的應用。
MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在,通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。
關于MQTT我分為2~3篇來描述,先從實踐來描述。
MQTT服務器搭建
MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議,所以需要一個服務器,MQTT服務器可以選擇開源平臺--EMQx和ThingsBoard。這兩個開源平臺部署比較方便。本次的講解主要基于EMQx開源平臺。
EMQx配置EMQx需要進行簡單的配置,比如設置MQTT client連接服務器時,需要的username、password等。
因為我的環境是在windows下,所以下面的配置都是基于windows下的,不過其他平臺的大同小異。
配置username和password等參數
在解壓的目錄中打開:emqxetcpluginsemqx_auth_username.conf
從examples中可以看出,可以設置多個username和password
加密方式設置為plain(透傳)
配置匿名登錄
在解壓的目錄中打開:emqxetcemqx.conf
為true,即允許匿名登錄,方便調試,如果設置成false,需要進行鑒權。
操作emqx broker:
// 啟動EMQx Broker:
emqx start
// 停止EMQx Broker:
emqx stop
// 重啟EMQx Broker:
emqx restart
更多的操作命令參考鏈接:https://docs.emqx.cn/broker/v4.3/getting-started/command-line.html
EMQx管理界面EMQx中包含了一個Web server,當啟動EMQx后,通過瀏覽器登錄《服務器IP:18083》就能登錄web server。
MQTT客戶端搭建
服務器搭建好了,那么還需要一個MQTT客戶端,為了快速學習,我們可以使用別人做好的MQTT客戶端軟件-- MQTT.fx。下載地址:http://www.jensd.de/apps/mqttfx/
下載完,根據提示安裝即可。
啟動一個MQTT客戶端:
打開設置
配置MQTT client
連接服務器
連接成功后,可以在EMQx web server上查看連接信息,如果信息跟客戶端的一致,說明連接成功
啟動第二個MQTT客戶端:
操作跟第一個客戶端一致,啟動完之后就可以在EMQx web server上查看連接信息
實驗
在上述中服務器和客戶已經成功建立連接。
我們通過一個實驗演示M2M的通信。
其中client01客戶端,訂閱一個topic,topic名稱為rice:
可以通過EMQx web server查看訂閱的topic
client02客戶端,向topic:rice發布消息。
總結
通過EMQx搭建服務器和MQTT.fx客戶端,我們很輕松的搭建好MQTT環境,這樣我們很方面的學習MQTT。
MQTT協議是一個基于TCP的應用層協議??梢愿弦黄恼碌腃oAP協議進行對比學習。CoAP是基于UDP的。不過也有基于UDP的MQTT。
原文標題:教你動手寫網絡協議棧-MQTT報文解析-實踐
文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
網絡
+關注
關注
14文章
7520瀏覽量
88641 -
MQTT
+關注
關注
5文章
649瀏覽量
22435
原文標題:教你動手寫網絡協議棧-MQTT報文解析-實踐
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論