mqtt客户端c语言开发
MQTT客戶端
- MQTT客戶端開發(fā)
- 簡介
- 架構(gòu)圖
- 傳輸層
- 協(xié)議層
MQTT客戶端開發(fā)
MQTT(消息隊(duì)列遙測傳輸)工作在 TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。
本篇博客主要記錄客戶端采用paho庫二次封裝,適配linux/win平臺,使用c++語言開發(fā)。
主要內(nèi)容包括,設(shè)計(jì)思想、架構(gòu)設(shè)計(jì)、程序源碼等。
簡介
開發(fā)mqtt客戶端,首先選定paho庫作為基礎(chǔ)收發(fā)庫,應(yīng)用具有自己的通信協(xié)議,mqtt客戶端需要將數(shù)據(jù)按照協(xié)議封裝,然后調(diào)用paho庫進(jìn)行收發(fā)。
架構(gòu)圖
應(yīng)用層:調(diào)用該模塊的應(yīng)用。
協(xié)議層:模塊對協(xié)議的封裝,主要任務(wù)是封包、解包以及調(diào)用傳輸層完成數(shù)據(jù)收發(fā)。
傳輸層:使用paho庫,完成連接的維護(hù)、數(shù)據(jù)的收發(fā)等具體通信的工作。
傳輸層
傳輸層使用paho作為基礎(chǔ)庫,具體使用方法見其官網(wǎng):http://www.eclipse.org/paho/index.php?page=downloads.php
其支持的語言包括c/c++等,這里采用c++語言的庫。
https://github.com/eclipse/paho.mqtt.cpp
可根據(jù)官網(wǎng)給出的連接下載c++語言的paho庫,win/linux平臺的都可以找到。linux平臺的庫可以自己編譯得到,編譯流程如下:
協(xié)議層
所謂協(xié)議層,就是根據(jù)應(yīng)用的功能定義的協(xié)議,按照應(yīng)用需要完成實(shí)現(xiàn)的功能,將請求參數(shù)按照協(xié)議打包,在通過傳輸層的接口來發(fā)送和接收,同時也會將接收到的數(shù)據(jù)進(jìn)行解包,結(jié)果返回應(yīng)用。
因?yàn)閙qtt協(xié)議的主題特性,協(xié)議層需要考慮應(yīng)用對同一個主題T1發(fā)送了A、B、C三個功能請求,broker(中間服務(wù)器)也將三個功能請求結(jié)果返回給T2主題,客戶端如何將T2主題的三個返回分發(fā)給A/B/C,所以這里增加了三個條件變量,當(dāng)發(fā)送A請求的時候,創(chuàng)建A的條件變量,阻塞等待A的應(yīng)答,當(dāng)在規(guī)定時間內(nèi),協(xié)議層收到數(shù)據(jù),并解析數(shù)據(jù)確定是A的應(yīng)答后,就講該應(yīng)答分發(fā)給A請求,同時釋放A的條件變量,至此完成了A功能。
總結(jié)
以上是生活随笔為你收集整理的mqtt客户端c语言开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word计算机课实验报告,Word 文字
- 下一篇: Hadoop 各组件介绍