色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Windows平臺(tái)上搭建一個(gè)簡(jiǎn)單的MQTT協(xié)議應(yīng)用

冬至配餃子 ? 來(lái)源:小麥大叔 ? 作者:菜刀和小麥 ? 2022-08-15 11:00 ? 次閱讀

mqtt協(xié)議

MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。

MQTT最大優(yōu)點(diǎn)在于,用極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)

作為一種低開銷、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。

1 MQTT協(xié)議特點(diǎn)

MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。

MQTT協(xié)議是輕量、簡(jiǎn)單、開放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機(jī)器與機(jī)器(M2M通信和物聯(lián)網(wǎng)(IoT)。

其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號(hào)的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。

MQTT協(xié)議當(dāng)前版本為,2014年發(fā)布的MQTT v3.1.1。除標(biāo)準(zhǔn)版外,還有一個(gè)簡(jiǎn)化版MQTT-SN,該協(xié)議主要針對(duì)嵌入式設(shè)備,這些設(shè)備一般工作于TCP/IP網(wǎng)絡(luò),如:ZigBee

MQTT 與 HTTP 一樣,MQTT 運(yùn)行在傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議 (TCP/IP) 堆棧之上。

poYBAGL5tSKAIDbCAAChk2n1NaI031.png

MQTT OSI

發(fā)布和訂閱

MQTT使用的發(fā)布/訂閱消息模式,它提供了一對(duì)多的消息分發(fā)機(jī)制,從而實(shí)現(xiàn)與應(yīng)用程序的解耦。

這是一種消息傳遞模式,消息不是直接從發(fā)送器發(fā)送到接收器(即點(diǎn)對(duì)點(diǎn)),而是由MQTT server(或稱為 MQTT Broker)分發(fā)的。

pYYBAGL5tTSAXfIjAADAZ98fLFc398.png

MQTT 服務(wù)器是發(fā)布-訂閱架構(gòu)的核心

它可以非常簡(jiǎn)單地在Raspberry PiNAS等單板計(jì)算機(jī)上實(shí)現(xiàn),當(dāng)然也可以在大型機(jī)或 Internet 服務(wù)器上實(shí)現(xiàn)。

服務(wù)器分發(fā)消息,因此必須是發(fā)布者,但絕不是訂閱者!

客戶端可以發(fā)布消息(發(fā)送方)、訂閱消息(接收方)或兩者兼而有之。

客戶端(也稱為節(jié)點(diǎn))是一種智能設(shè)備,如微控制器或具有 TCP/IP 堆棧和實(shí)現(xiàn) MQTT 協(xié)議的軟件的計(jì)算機(jī)。

消息在允許過濾的主題下發(fā)布。主題是分層劃分的 UTF-8 字符串。不同的主題級(jí)別用斜杠/作為分隔符號(hào)。

我們來(lái)看看下面的設(shè)置。

這就是一個(gè)簡(jiǎn)單的MQTT的應(yīng)用場(chǎng)景,具體如下圖所示;

pYYBAGL5tUqALLjjAAFC_bFPqzQ752.png

MQTT 發(fā)布和訂閱

QoS(Quality of Service levels)

服務(wù)質(zhì)量是 MQTT 的一個(gè)重要特性。當(dāng)我們使用 TCP/IP 時(shí),連接已經(jīng)在一定程度上受到保護(hù)。但是在無(wú)線網(wǎng)絡(luò)中,中斷和干擾很頻繁,MQTT 在這里幫助避免信息丟失及其服務(wù)質(zhì)量水平。這些級(jí)別在發(fā)布時(shí)使用。如果客戶端發(fā)布到 MQTT 服務(wù)器,則客戶端將是發(fā)送者,MQTT 服務(wù)器將是接收者。當(dāng)MQTT服務(wù)器向客戶端發(fā)布消息時(shí),服務(wù)器是發(fā)送者,客戶端是接收者。

QoS 0

這一級(jí)別會(huì)發(fā)生消息丟失或重復(fù),消息發(fā)布依賴于底層TCP/IP網(wǎng)絡(luò)。即:<=1

poYBAGL5taGARbCDAABPNJNgia8476.png

QoS 1

QoS 1 承諾消息將至少傳送一次給訂閱者。

poYBAGL5tZCAQK1eAABeP3EKwwM637.png

QoS 2

使用 QoS 2,我們保證消息僅傳送到目的地一次。為此,帶有唯一消息 ID 的消息會(huì)存儲(chǔ)兩次,首先來(lái)自發(fā)送者,然后是接收者。QoS 級(jí)別 2 在網(wǎng)絡(luò)中具有最高的開銷,因?yàn)樵诎l(fā)送方和接收方之間需要兩個(gè)流。

poYBAGL5tWyAJGwqAABeVRCqjtY254.png

2 MQTT 數(shù)據(jù)包結(jié)構(gòu)

固定頭(Fixed header),存在于所有MQTT數(shù)據(jù)包中,表示數(shù)據(jù)包類型及數(shù)據(jù)包的分組類標(biāo)識(shí);

可變頭(Variable header),存在于部分MQTT數(shù)據(jù)包中,數(shù)據(jù)包類型決定了可變頭是否存在及其具體內(nèi)容;

消息體(Payload),存在于部分MQTT數(shù)據(jù)包中,表示客戶端收到的具體內(nèi)容;

整體MQTT的消息格式如下圖所示;

poYBAGL5tbOAUHu9AACGk7JLpqE936.png

2.1 MQTT固定頭

固定頭存在于所有MQTT數(shù)據(jù)包中,其結(jié)構(gòu)如下:

poYBAGL5tcKAMRy5AABWTizhHYM200.png

下面簡(jiǎn)單分析一下固定頭的消息格式;

poYBAGL5tdOAKBuoAAAnLEYDJhI803.png

MQTT消息類型 / message type

**位置:**byte 1, bits 7-4。

4位的無(wú)符號(hào)值,類型如下:

pYYBAGL5tiOAAfPzAAE_v451hj8316.png

標(biāo)識(shí)位 / DUP

**位置:**byte 1, bits 3-0。

在不使用標(biāo)識(shí)位的消息類型中,標(biāo)識(shí)位被作為保留位。如果收到無(wú)效的標(biāo)志時(shí),接收端必須關(guān)閉網(wǎng)絡(luò)連接:

pYYBAGL5tF-AYuUNAAE76PW5tbc321.png

00:最多一次,即:<=1

01:至少一次,即:>=1

10:一次,即:=1

11:預(yù)留

剩余長(zhǎng)度(Remaining Length)

位置:byte 1。

固定頭的第二字節(jié)用來(lái)保存變長(zhǎng)頭部和消息體的總大小的,但不是直接保存的。這一字節(jié)是可以擴(kuò)展,其保存機(jī)制,前7位用于保存長(zhǎng)度,后一部用做標(biāo)識(shí)。當(dāng)最后一位為 1時(shí),表示長(zhǎng)度不足,需要使用二個(gè)字節(jié)繼續(xù)保存。例如:計(jì)算出后面的大小為0

2.2 MQTT可變頭 / Variable header

MQTT數(shù)據(jù)包中包含一個(gè)可變頭,它駐位于固定的頭和負(fù)載之間。可變頭的內(nèi)容因數(shù)據(jù)包類型而不同,較常的應(yīng)用是做為包的標(biāo)識(shí):

RETAIN:發(fā)布保留標(biāo)識(shí),表示服務(wù)器要保留這次推送的信息,如果有新的訂閱者出現(xiàn),就把這消息推送給它,如果設(shè)有那么推送至當(dāng)前訂閱者后釋放。

QoS發(fā)布消息的服務(wù)質(zhì)量(前面已經(jīng)做過介紹),即:保證消息傳遞的次數(shù)

DUP:發(fā)布消息的副本。用來(lái)在保證消息的可靠傳輸,如果設(shè)置為 1,則在下面的變長(zhǎng)中增加MessageId,并且需要回復(fù)確認(rèn),以保證消息傳輸完成,但不能用于檢測(cè)消息重復(fù)發(fā)送。

pYYBAGL5tHaAcLxOAAA6Zl2qmVk008.png

很多類型數(shù)據(jù)包中都包括一個(gè)2字節(jié)的數(shù)據(jù)包標(biāo)識(shí)字段,這些類型的包有:

PUBLISH (QoS > 0)、PUBACK、PUBREC、PUBREL、PUBCOMP、

SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK

2.3 Payload消息體

Payload消息體是MQTT數(shù)據(jù)包的第三部分,CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四種類型的消息 有消息體:

3 環(huán)境搭建

介紹完基礎(chǔ)理論部分,下面在Windows平臺(tái)上搭建一個(gè)簡(jiǎn)單的MQTT應(yīng)用,進(jìn)行簡(jiǎn)單的應(yīng)用,

3.1 MQTT服務(wù)器搭建

目前MQTT代理的主流平臺(tái)有下面幾個(gè):

pYYBAGL5tKyAS_z8AAAs1c9qTZs002.png

本文將使用 Mosquitoo 進(jìn)行測(cè)試,進(jìn)入到安裝頁(yè)面,下載自己電腦的系統(tǒng)所適配的程序;

UNSUBSCRIBE,消息體內(nèi)容是要訂閱的主題。

SUBACK,消息體內(nèi)容是服務(wù)器對(duì)于SUBSCRIBE所申請(qǐng)的主題及QoS進(jìn)行確認(rèn)和回復(fù)。

SUBSCRIBE,消息體內(nèi)容是一系列的要訂閱的主題以及QoS。

CONNECT,消息體內(nèi)容主要是:客戶端的ClientID、訂閱的Topic、Message以及用戶名和密碼

poYBAGL5tIyABLt8AADUNAfFqlQ694.png

下載頁(yè)面

安裝成功之后,進(jìn)入到安裝路徑下,找到mosquitto.exe;

按住Shift,右鍵鼠標(biāo)點(diǎn)擊空白處,然后打開Powershell,正常打開一個(gè)終端軟件即可;

輸入./mosquitto.exe -p 10086,就開啟了MQTT服務(wù),監(jiān)聽的地址是127.0.0.1,端口是10086;

輸入./mosquitto.exe -h 可以查看相應(yīng)的幫助;

具體如下圖所示;

pYYBAGL5tNmAHMadAAFWkFkfC_I558.png

3.2 MQTT Client

服務(wù)器搭建好了,下面就是開啟客戶端,進(jìn)行發(fā)布和訂閱,這樣就可以傳輸相應(yīng)的消息。

這里我使用的是自己編譯了一個(gè)QT mqtt client 程序,是基于Qt的官方庫(kù)進(jìn)行編譯的,下面打開這個(gè)軟件,下一期簡(jiǎn)單介紹一下如何完成這個(gè)客戶端,并設(shè)置好相應(yīng)參數(shù):

然后訂閱主題,就可以互相發(fā)送數(shù)據(jù)了,具體如下圖所示;

端口:10086

地址:127.0.0.1

pYYBAGL5tPOAKnmlAACcdti0ADk827.png

結(jié)合前面的圖片來(lái)看,整體的架構(gòu)如下所示;

pYYBAGL5tQmACOHSAAFqB2OIzaM060.png

4 總結(jié)

本文簡(jiǎn)單介紹了MQTT協(xié)議的工作原理,以及相應(yīng)的協(xié)議格式,簡(jiǎn)單介紹了協(xié)議的一些細(xì)節(jié),具體舉出了相應(yīng)的應(yīng)用場(chǎng)景,作者水平和能力有限,文中難免存在錯(cuò)誤和紕漏,請(qǐng)大佬不吝賜教。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3603

    瀏覽量

    90845
  • TCPIP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    12156
  • MQTT協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    5781
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    mqtt協(xié)議怎么用?以MQTT3.1協(xié)議ESP8266連接阿里云物聯(lián)網(wǎng)平臺(tái)

    于TCP/IP協(xié)議上,由IBM1999年發(fā)布。MQTT最大的優(yōu)點(diǎn)在于可以以極少的代碼和有限的帶寬,為遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。做為種低開銷、低帶寬占用的即時(shí)通訊
    的頭像 發(fā)表于 05-25 18:32 ?6153次閱讀
    <b class='flag-5'>mqtt</b><b class='flag-5'>協(xié)議</b>怎么用?以<b class='flag-5'>MQTT</b>3.1<b class='flag-5'>協(xié)議</b>ESP8266連接阿里云物聯(lián)網(wǎng)<b class='flag-5'>平臺(tái)</b>

    如何快速搭建個(gè)MQTT協(xié)議的測(cè)試環(huán)境

    大家好,我是麥?zhǔn)澹坝行』锇榻ㄗh出期如何快速搭建個(gè)MQTT協(xié)議的測(cè)試環(huán)境,因?yàn)樽约簩懙?/div>
    的頭像 發(fā)表于 12-26 09:28 ?2591次閱讀
    如何快速<b class='flag-5'>搭建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>的測(cè)試環(huán)境

    [MicroPython]TPYBoard v202 MQTT協(xié)議2:上傳數(shù)據(jù)點(diǎn)到OneNET平臺(tái)

    參考上面前言中的教程,先進(jìn)行產(chǎn)品和設(shè)備的添加。 在數(shù)據(jù)點(diǎn)上報(bào)之前,我們需要在OneNET云平臺(tái)上添加個(gè)數(shù)據(jù)流模板。步驟如下: 1、進(jìn)入[開發(fā)者中心]的[設(shè)備管理]頁(yè)面,左側(cè)菜單欄中
    發(fā)表于 09-14 10:48

    怎么HI3516DV300上移植個(gè)MQTT

    最近......算了干筆者這行的就是塊磚,哪里缺往哪墊。簡(jiǎn)單說(shuō)就是要往款產(chǎn)品上用MQTT,而目前產(chǎn)品的開發(fā)板還沒拿到,所以先在現(xiàn)有的HI3516DV300上移植
    發(fā)表于 11-05 09:06

    怎樣通過MQTT協(xié)議向onenet平臺(tái)推送數(shù)據(jù)呢

    步驟如下:完成創(chuàng)建下載工具連接上后下面有調(diào)試信息。如下:顯示在線狀態(tài)4.發(fā)送個(gè)數(shù)據(jù)到平臺(tái)上發(fā)送后平臺(tái)顯示出來(lái)用網(wǎng)絡(luò)助手進(jìn)行設(shè)備上線,上傳數(shù)據(jù)操作。看
    發(fā)表于 01-13 07:16

    玩轉(zhuǎn)mqtt協(xié)議的方法

    過完年即將陷入場(chǎng)惡戰(zhàn)之中,可能無(wú)暇玩這么多東西了,趁著過年把之前直想搞的mqtt協(xié)議給玩
    發(fā)表于 02-16 06:48

    基于Dragonboard 410c開發(fā)板android平臺(tái)上搭建kinect運(yùn)行環(huán)境

    繼上篇《基于qualcomm平臺(tái)的kinect教程windows配置篇》,本文我們接著來(lái)介紹基于qualcomm的android
    發(fā)表于 02-27 10:13 ?1617次閱讀

    物聯(lián)網(wǎng)通信協(xié)議MQTT協(xié)議介紹MQTT協(xié)議測(cè)試環(huán)境如何搭建及分析

    MQTT個(gè)客戶端服務(wù)端架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。 它的設(shè)計(jì)思想是輕巧、 開放、簡(jiǎn)單、 規(guī)范, 因此易于實(shí)現(xiàn)。
    發(fā)表于 09-11 17:29 ?8次下載
    物聯(lián)網(wǎng)通信<b class='flag-5'>協(xié)議</b>之<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>介紹<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>測(cè)試環(huán)境如何<b class='flag-5'>搭建</b>及分析

    如何搭建個(gè)MQTT服務(wù)器?

    協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM1999年發(fā)布。MQTT最大優(yōu)點(diǎn)在于,可以以極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。作為
    的頭像 發(fā)表于 05-10 14:31 ?8383次閱讀
    如何<b class='flag-5'>搭建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>MQTT</b>服務(wù)器?

    個(gè)MQTT網(wǎng)關(guān)讓西門子S7-300快速接入MQTT平臺(tái)

    個(gè)MQTT網(wǎng)關(guān)讓西門子S7-300快速接入MQTT平臺(tái)
    發(fā)表于 11-10 16:47 ?1636次閱讀

    如何在ATECLOUD平臺(tái)搭建個(gè)簡(jiǎn)單的測(cè)試demo

    ATECLOUD平臺(tái)搭建個(gè)簡(jiǎn)單的測(cè)試項(xiàng)目demo。 我們以測(cè)試啟動(dòng)電壓的demo搭建為例。 1
    的頭像 發(fā)表于 03-28 16:13 ?1191次閱讀
    如何在ATECLOUD<b class='flag-5'>平臺(tái)</b>中<b class='flag-5'>搭建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡(jiǎn)單</b>的測(cè)試demo

    Node搭建本地MQTT服務(wù)器

    搭建MQTTMQTT介紹MQTT種基于發(fā)布/訂閱模式的輕量級(jí)物聯(lián)網(wǎng)消息傳輸
    的頭像 發(fā)表于 05-26 14:11 ?1899次閱讀
    Node<b class='flag-5'>搭建</b>本地<b class='flag-5'>MQTT</b>服務(wù)器

    MQTT協(xié)議網(wǎng)關(guān)串口連接三菱FX3UPLC操作說(shuō)明

    前言:MQTT個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議MQTT協(xié)議的特點(diǎn)是輕量、
    發(fā)表于 08-14 15:19 ?0次下載

    MQTT物聯(lián)網(wǎng)平臺(tái)是什么?MQTT物聯(lián)網(wǎng)平臺(tái)的功能有哪些

    MQTT(Message Queuing Telemetry Transport)是種基于客戶端-服務(wù)器架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。它基于TCP/IP協(xié)議棧構(gòu)建,設(shè)計(jì)輕巧、開
    的頭像 發(fā)表于 01-24 09:23 ?1501次閱讀

    MQTT物聯(lián)網(wǎng)平臺(tái)是什么?MQTT物聯(lián)網(wǎng)平臺(tái)的功能

    MQTT(Message Queuing Telemetry Transport)是種基于客戶端-服務(wù)器架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。它基于TCP/IP協(xié)議棧構(gòu)建,設(shè)計(jì)輕巧、開
    的頭像 發(fā)表于 04-01 10:20 ?1019次閱讀
    主站蜘蛛池模板: 亚洲无遮挡无码A片在线 | 成人动漫百度影音 | 大屁股国产白浆一二区 | 亚洲AV久久无码高潮喷水 | 公和熄洗澡三级中文字幕 | 耽肉高h喷汁呻吟 | gayxxxxgay呻吟受日本 | 天天躁日日躁狠狠躁AV麻豆 | 国产露脸无码A区久久 | 亚洲国产成人精品无码区APP | 在线观看国产精美视频 | s8sp视频高清在线播放 | 魔乳 堕乳漫画acg产卵 | 亚洲地址一地址二地址三 | 欧美日韩另类在线专区 | 亚洲日韩在线天堂一 | 阴茎插入阴道 | 在线观看日本污污ww网站 | 国产在线观看成人免费视频 | 亚洲熟女乱色一区二区三区 | 超碰caoporen国产 | 国产成人精品视频频 | 久久99视频免费 | 男人脱女人衣服吃奶视频 | 欧美午夜不卡在线观看 | 国产精品九九久久 | 在线播放一区二区精品产 | YELLOW高清视频免费观看 | 久久不射视频 | 久久三级网站 | 国产99久久| 久久99国产亚洲高清观着 | 欧美xxxx印度| 亚洲AV噜噜88| 97超级碰久久久久香蕉人人 | 狼群资源网中文字幕 | 免费可以看黄的视频s色 | 野花香在线观看免费观看大全动漫 | 久久AV亚洲精品一区无码网 | 9277在线观看免费高清完整版 | 韩国精品韩国专区久久 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品