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