c++ mqtt客户端_MQTT详解及百度物接入连接手机测试(含源码) 秦子帅
MQTT簡介
MQTT定義
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測傳輸)是IBM開發(fā)的一個(gè)即時(shí)通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。該協(xié)議支持所有平臺(tái),幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來,被用來當(dāng)做傳感器和制動(dòng)器(比如通過Twitter讓房屋聯(lián)網(wǎng))的通信協(xié)議。
MQTT特點(diǎn)
MQTT協(xié)議是為大量計(jì)算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,它具有以下主要的幾項(xiàng)特性:
1.使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;
2.對負(fù)載內(nèi)容屏蔽的消息傳輸;
3.使用 TCP/IP 提供網(wǎng)絡(luò)連接;
4.有三種消息發(fā)布服務(wù)質(zhì)量:
- “至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送。
- “至少一次”,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。
- “只有一次”,確保消息到達(dá)一次。這一級別可用于如下情況,在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。
5.小型傳輸,開銷很小(固定長度的頭部是 2 字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;
6.使用 Last Will 和 Testament 特性通知有關(guān)各方客戶端異常中斷的機(jī)制;
MQTT特征原理
image
實(shí)現(xiàn)MQTT協(xié)議需要:客戶端和服務(wù)器端
MQTT協(xié)議有三種身份:發(fā)布者(Pushlish)、代理(Broker)、訂閱者(Subscribe)
MQTT的消息分為:主題(Topic)和負(fù)載(payload)兩部分
Topic,可以理解為消息的類型,訂閱者Subscribe之后,就會(huì)收到該主題的消息內(nèi)容(payload)。
payload,可以理解為消息的內(nèi)容,是指訂閱者具體的使用內(nèi)容
消息類型:
- CONNECT:客戶端連接到MQTT代理
- CONNACK:連接確認(rèn)
- PUBLISH:新發(fā)布消息
- PUBACK:新發(fā)布消息確認(rèn),是QoS 1給PUBLISH消息的回復(fù)
- PUBREC:QoS 2消息流的第一部分,表示消息發(fā)布已記錄
- PUBREL:QoS 2消息流的第二部分,表示消息發(fā)布已釋放
- PUBCOMP:QoS 2消息流的第三部分,表示消息發(fā)布完成
- SUBSCRIBE:客戶端訂閱某個(gè)主題
- SUBACK:對于SUBSCRIBE消息的確認(rèn)
- UNSUBSCRIBE:客戶端終止訂閱的消息
- UNSUBACK:對于UNSUBSCRIBE消息的確認(rèn)
- PINGREQ:心跳
- PINGRESP:確認(rèn)心跳
- DISCONNECT:客戶端終止連接前優(yōu)雅地通知MQTT代理
MQTT應(yīng)用
通過MQTT協(xié)議,目前已經(jīng)擴(kuò)展出了數(shù)十個(gè)MQTT服務(wù)器端程序,可以通過PHP,JAVA,Python,C,C#等系統(tǒng)語言來向MQTT發(fā)送相關(guān)消息。
此外,國內(nèi)很多企業(yè)都廣泛使用MQTT作為Android手機(jī)客戶端與服務(wù)器端推送消息的協(xié)議。其中Sohu,Cmstop手機(jī)客戶端中均有使用到MQTT作為消息推送消息。據(jù)Cmstop主要負(fù)責(zé)消息推送的高級研發(fā)工程師李文凱稱,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,MQTT由于開放源代碼,耗電量小等特點(diǎn),將會(huì)在移動(dòng)消息推送領(lǐng)域會(huì)有更多的貢獻(xiàn),在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信,信息的收集,MQTT都可以作為考慮的方案之一。在未來MQTT會(huì)進(jìn)入到我們生活的各各方面。
百度物接入loT及MQTT測試
配置
1.注冊百度云賬號,打開物接入界面:
image
2.在管理控制平臺(tái)創(chuàng)建:
image
image
3.點(diǎn)擊剛才創(chuàng)建的實(shí)例名稱,并創(chuàng)建設(shè)備:
image
image
4.填寫身份、策略、主題等信息
需要注意的是Topic和生成的密鑰一定要記住,如果密鑰丟了的話只能去重置密鑰了。
image
image
基本配置就是這些了。
MQTT連接測試
1.點(diǎn)擊連接測試:
image
2.填寫剛才生成密鑰,以及用戶名稱,然后點(diǎn)擊Connect
image
3.連接之后開始測試,填寫一下你剛才設(shè)置的主題,比如我設(shè)置的主題是qzsservice,步驟如下:
image
image
image
發(fā)送后底下就會(huì)顯示Messages信息了,說明測試成功!
百度物接入服務(wù)器與手機(jī)連接測試
上面我們已經(jīng)講完了百度物接入怎么創(chuàng)建實(shí)例+連接測試了,下面講一下連接測試發(fā)送消息怎么與手機(jī)程序相連。也就是服務(wù)器發(fā)送一條消息,手機(jī)程序接收。:
首先需要引入兩個(gè)包:
image
然后就是通過一系列的操作:
- 創(chuàng)建MQTT連接 createconnect
- 訂閱主題subscribe
代碼我就不展示了,文末會(huì)貼出源碼下載的地址
測試步驟:
1.完成第二部分的內(nèi)容,記下生成的topic,server_utl,用戶名,密鑰
2.在手機(jī)程序Constants加入這些數(shù)據(jù)
3.運(yùn)行程序,輸入訂閱的主題,如果顯示“訂閱主題成功”說明成功了,此時(shí)再M(fèi)QTT服務(wù)器上發(fā)送一條消息,觀察log,會(huì)顯示收到的消息。
源碼獲取:加我的WX:lengquele5311
總結(jié)
以上是生活随笔為你收集整理的c++ mqtt客户端_MQTT详解及百度物接入连接手机测试(含源码) 秦子帅的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打开word2007总是出现配置进度_实
- 下一篇: 数据结构之链表--单链表