在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

MQTT客戶端介紹

汽車電子技術(shù) ? 來源:物聯(lián)網(wǎng)IoT開發(fā) ? 作者:杰杰mcu ? 2023-02-28 16:14 ? 次閱讀

mqttclient

一個高性能、高穩(wěn)定性的跨平臺MQTT客戶端

一個高性能、高穩(wěn)定性的跨平臺MQTT客戶端,基于socket API之上開發(fā),可以在嵌入式設(shè)備(FreeRTOS/LiteOS/RT-Thread/TencentOS tiny)、Linux、Windows、Mac上使用,擁有非常簡潔的API接口,以極少的資源實(shí)現(xiàn)QOS2的服務(wù)質(zhì)量,并且無縫銜接了mbedtls加密庫。

優(yōu)勢:

  • 具有極高的穩(wěn)定性 :無論是 掉線重連丟包重發(fā) ,都是嚴(yán)格遵循MQTT協(xié)議標(biāo)準(zhǔn)執(zhí)行,除此之外對大數(shù)據(jù)量的測試無論是收是發(fā),都是非常穩(wěn)定,高頻測試也是非常穩(wěn)定。
  • 輕量級 :整個代碼工程極其簡單,不使用mbedtls情況下,占用資源極少,作者曾使用esp8266模組與云端通信,整個工程代碼消耗的RAM不足15k。
  • 支持mbedtls加密傳輸 ,讓網(wǎng)絡(luò)傳輸更加安全,而且接口層完全不需要用戶理會,無論是否加密,mqttclient對用戶提供的API接口是固定的,這就很好的兼容了一套代應(yīng)用層的碼可以加密傳輸也可以不加密傳輸。
  • 支持多客戶端 ,同時兼容多個客戶端運(yùn)行工作,一個設(shè)備連接多個的服務(wù)器。
  • 支持同步異步處理 ,應(yīng)用程序無需阻塞等待浪費(fèi)CPU資源。
  • 支持?jǐn)r截器配置 ,在某些平臺中,客戶端會默認(rèn)自動訂閱系統(tǒng)主題,而且每次來自服務(wù)器的主題都是變動的,此時需要使用攔截器進(jìn)行攔截,分離主題與數(shù)據(jù)信息,并遞交給用戶,極大提高靈活性。
  • 擁有在線代碼生成工具 ,極其簡單配置就可以生成對應(yīng)的代碼,地址:https://jiejietop.gitee.io/mqtt/index.html
  • 擁有極簡的API接口 ,總的來說,mqttclient的配置都有默認(rèn)值,基本無需配置都能使用的,也可以隨意配置,對配置都有健壯性檢測,這樣子設(shè)計(jì)的API接口也是非常簡單。
  • 多功能參數(shù)可配置可裁剪 ,重連時間間隔、心跳周期、最大訂閱數(shù)量、命令超時、讀寫緩沖區(qū)大小、攔截器處理等等參數(shù)功能可裁剪可配置,滿足開發(fā)者在復(fù)雜、簡單等各種開發(fā)環(huán)境下的使用需求。
  • 支持自動重新訂閱主題 ,在自動重連后保證主題不會丟失。
  • 支持主題通配符“#”、“+”
  • 訂閱的主題與消息處理完全分離 ,讓編程邏輯更加簡單易用,用戶無需理會錯綜復(fù)雜的邏輯關(guān)系。
  • mqttclient內(nèi)部已實(shí)現(xiàn)保活處理機(jī)制 ,無需用戶過多關(guān)心理會,用戶只需專心處理應(yīng)用功能即可。
  • 擁有非常好的設(shè)計(jì) ,以極少的資源設(shè)計(jì)了 記錄機(jī)制 ,當(dāng)報(bào)文在丟失的時候進(jìn)行重發(fā)操作,確保qos1、qos2服務(wù)質(zhì)量等級的報(bào)文保證其服務(wù)質(zhì)量。
  • 有非常好的代碼風(fēng)格與思想 :整個代碼采用分層式設(shè)計(jì),代碼實(shí)現(xiàn)采用異步處理的思想,降低耦合,提高性能。
  • 基于標(biāo)準(zhǔn)BSD socket之上開發(fā) ,只要是兼容BSD socket的系統(tǒng)均可使用。
  • 無縫銜接salof :它是一個同步異步日志輸出框架,在空閑時候輸出對應(yīng)的日志信息,也可以將信息寫入flash中保存,方便調(diào)試。
  • 使用著名的 paho mqtt 庫封包
  • 無其他依賴

在線代碼生成工具

本項(xiàng)目擁有代碼生成工具,只需要在線配置即可生成代碼,極其簡單易用,代碼生成工具地址:https://jiejietop.gitee.io/mqtt/index.html

圖片

在線代碼生成工具

占用資源大小

總計(jì)占 10857字節(jié)ROM,而RAM的開銷則幾乎只依賴動態(tài)內(nèi)存,在不使用TLS加密傳輸?shù)那闆r下,維持QOS0服務(wù)質(zhì)量等級的通信動態(tài)內(nèi)存大約僅需要3694字節(jié),這包括1024讀緩沖區(qū) + 1024寫緩沖區(qū) + 1024內(nèi)部線程棧大小,相對于其他MQTT客戶端來說,mqttclient需要的RAM資源開銷極少。

圖片

整體框架

擁有非常明確的分層框架。

圖片

整體架構(gòu)

  • 在框架的最上方是API函數(shù)接口,實(shí)現(xiàn)了客戶端的申請、釋放、設(shè)置參數(shù)、連接服務(wù)器、斷開連接、訂閱主題、取消訂閱主題、發(fā)布消息等函數(shù)接口。
  • 使用了著名的paho mqtt庫作為MQTT報(bào)文封包庫。
  • 采用異步處理的機(jī)制去管理所有的ack,它在發(fā)送報(bào)文的時候不用等待服務(wù)器的應(yīng)答,只是記錄下來,在收到服務(wù)器的ack后,取消這個記錄, 效率極高 ;而在發(fā)送mqtt報(bào)文(QoS1/QoS2)的時候沒有收到服務(wù)器的應(yīng)答時,將重發(fā)該報(bào)文。
  • 內(nèi)部實(shí)現(xiàn)了一個mqtt yield線程,統(tǒng)一處理所有的內(nèi)容,比如 超時的處理、ack報(bào)文的處理、收到來自服務(wù)器的publish報(bào)文 ,此時會去調(diào)用回調(diào)函數(shù)告知用戶收到的數(shù)據(jù),發(fā)布釋放、發(fā)布完成報(bào)文的處理、心跳報(bào)文(保持活性),當(dāng)與服務(wù)器斷開連接時需要嘗試重連、重新訂閱主題,重新發(fā)送報(bào)文或者應(yīng)答等。
  • 報(bào)文的處理,如讀寫報(bào)文、解碼mqtt報(bào)文、設(shè)置報(bào)文(dup標(biāo)記)、銷毀報(bào)文等操作。
  • network是網(wǎng)絡(luò)組件,它可以 自動選擇數(shù)據(jù)通道 ,如果是加密方式則通過tls加密進(jìn)行數(shù)據(jù)傳輸,而tls可以選擇mbedtls作為加密后端;也可以是tcp直連方式,最終都是通過tcp傳輸?shù)摹?/li>
  • platform是平臺抽象層,封裝了不同系統(tǒng)的東西,比如 socke或者AT,線程、時間、互斥鎖、內(nèi)存管理 ,這些是與系統(tǒng)打交道的,也是跨平臺必要的封裝。
  • 最右邊的則是通用的內(nèi)容,list的處理、日志庫、錯誤處理、軟件隨機(jī)數(shù)發(fā)生器等。

支持的平臺

目前已實(shí)現(xiàn)了Linux、TencentOS tiny、FreeRTOS、RT-Thread平臺(已做成軟件包,名字為kawaii-mqtt),除此之外TencentOS tiny的AT框架亦可以使用,并且穩(wěn)定性極好!

圖片

版本

圖片

問題

歡迎以 GitHub Issues 的形式提交問題和bug報(bào)告

版權(quán)和許可

mqttclient 遵循 Apache License v2.0 開源協(xié)議。鼓勵代碼共享和尊重原作者的著作權(quán),可以自由的使用、修改源代碼,也可以將修改后的代碼作為開源或閉源軟件發(fā)布。

linux平臺下測試使用

安裝cmake:

sudo apt-get install cmake g++

測試程序

圖片

編譯 & 運(yùn)行

./build.sh

運(yùn)行build.sh腳本后會在 ./build/bin/ 目錄下生成可執(zhí)行文件 emqxbaiduonenet等多個平臺的可執(zhí)行程序,直接運(yùn)行即可。

./build/bin/emqx

編譯成動態(tài)庫libmqttclient.so

./make-libmqttclient.sh

運(yùn)行make-libmqttclient.sh腳本后會在 ./libmqttclient/lib目錄下生成一個動態(tài)庫文件libmqttclient.so,并安裝到系統(tǒng)的/usr/lib目錄下,相關(guān)頭文件已經(jīng)拷貝到./libmqttclient/include目錄下,將其拷貝到你的工程中即可,編譯應(yīng)用程序的時候只需要鏈接動態(tài)庫即可-lmqttclient -lpthread,動態(tài)庫的配置文件是根據(jù)./test/mqtt_config.h配置的。

如果你是用交叉編譯器的話,則應(yīng)該根據(jù)你使用的編譯器導(dǎo)出對應(yīng)的環(huán)境變量(此處使用的交叉編譯器是arm-linux-gnueabihf-gcc),同時你也必須將動態(tài)庫文件libmqttclient.so拷貝到你的嵌入式系統(tǒng)/usr/lib目錄下:

export CROSS_COMPILE=arm-linux-gnueabihf-

如若需要卸載 libmqttclient.so ,執(zhí)行以下命令即可:

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

    關(guān)注

    5119

    文章

    19383

    瀏覽量

    312138
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1545

    瀏覽量

    63189
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    660

    瀏覽量

    23278
收藏 人收藏

    評論

    相關(guān)推薦

    基于Eclipse paho-mqtt源碼包的MQTT客戶端設(shè)計(jì)(上)

    MQTT 軟件包介紹Paho MQTT 是 Eclipse 實(shí)現(xiàn)的 MQTT 協(xié)議的客戶端,本軟件包是在 Eclipse paho-
    發(fā)表于 08-04 16:28

    基于Eclipse paho-mqtt源碼包的MQTT客戶端設(shè)計(jì)(下)

    的 Topic#define MQTT_WILLMSG "Goodbye!" //設(shè)置斷開通知消息配置 MQTT 客戶端結(jié)構(gòu)體接下來需要初始化 MQTT 軟件包
    發(fā)表于 08-04 16:33

    通訊貓MQTT服務(wù)器在線客戶端的問題

    我在網(wǎng)上找一個通訊貓MQTT服務(wù)器在線客戶端。我有點(diǎn)糊涂,到底是服務(wù)器,還是客戶端。可以連上,也可以發(fā)數(shù)據(jù),就是不知道跟誰連。我從上面下了個WIN32客戶端,打開,怎么設(shè)置都連不上。用
    發(fā)表于 11-19 12:17

    RyanMqtt實(shí)現(xiàn)MQTT3.1.1協(xié)議的客戶端

    還沒有同步到packages庫列表,暫時還無法在軟件包列表搜索到。提pr應(yīng)該3天了…….介紹RyanMqtt 實(shí)現(xiàn)了 MQTT3.1.1 協(xié)議的客戶端。此庫針對資源受限的嵌入式設(shè)備進(jìn)行了優(yōu)化。初衷:在
    發(fā)表于 12-01 15:19

    MQTT客戶端發(fā)送消息出錯是什么原因造成的呢?

    mqtt 客戶端發(fā)送消息時候 會有下面的錯誤請問怎么回事啊[D/mqtt.sample] inter mqtt_online_callback![D/
    發(fā)表于 01-10 15:20

    如何在rtos mqtt示例中獲取客戶端句柄?

    中,我調(diào)用 代碼:全選esp_mqtt_client_publish() 但我沒有客戶端句柄,它只在回調(diào)中設(shè)置。我嘗試使用客戶端句柄的全局副本,但它沒有用,除了是個壞主意: 代碼:全選
    發(fā)表于 05-15 08:13

    AT32基于FreeRTOS的AWS MQTT客戶端

    AT32基于FreeRTOS的AWS MQTT客戶端建立一個MQTT客戶端與 AWS IoT Core進(jìn)行通訊,用戶可以基于這個范例去開發(fā)屬于自己的應(yīng)用。
    發(fā)表于 10-26 06:03

    mqtt 客戶端VS2010

    mqtt客戶端源代碼,有一個工程是生成mqtt協(xié)議的需要的dll文件,另一個工程師簡單的調(diào)用這個dll實(shí)現(xiàn)客戶端與服務(wù)器的通信,適合剛開始學(xué)習(xí)的用戶了解!!
    發(fā)表于 11-19 15:17 ?59次下載

    NodeMCU項(xiàng)目(三)MQTT客戶端

    NodeMCU模塊連接WiFi后,作為一個客戶端連接MQTT服務(wù)器;手機(jī)通過微信小程序連接到相同的服務(wù)器上,作為另一個客戶端。手機(jī)和NodeMCU不需要處于同一局域網(wǎng)下,兩者之間的通信不受時間和空間
    發(fā)表于 11-05 17:05 ?1次下載
    NodeMCU項(xiàng)目(三)<b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>

    MQTT客戶端移植C語言

    mqtt客戶端源碼地址:https://github.com/eclipse/paho.mqtt.embedded-cSubscribe Demo#include
    發(fā)表于 01-13 13:50 ?3次下載
    <b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>移植C語言

    MQTT客戶端空氣質(zhì)量快速入門指南

    MQTT客戶端空氣質(zhì)量快速入門指南
    發(fā)表于 01-12 18:43 ?1次下載
    <b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>空氣質(zhì)量快速入門指南

    MQTT客戶端快速入門指南 按鍵按下

    MQTT客戶端快速入門指南 按鍵按下
    發(fā)表于 01-12 18:43 ?1次下載
    <b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>快速入門指南 按鍵按下

    MQTT客戶端空氣質(zhì)量快速入門指南

    MQTT客戶端空氣質(zhì)量快速入門指南
    發(fā)表于 07-03 18:34 ?1次下載
    <b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>空氣質(zhì)量快速入門指南

    MQTT客戶端快速入門指南 按鍵按下

    MQTT客戶端快速入門指南 按鍵按下
    發(fā)表于 07-03 18:34 ?0次下載
    <b class='flag-5'>MQTT</b><b class='flag-5'>客戶端</b>快速入門指南 按鍵按下

    MQTT中服務(wù)客戶端

    MQTT 是一種基于客戶端-服務(wù)架構(gòu)(C/S)的消息傳輸協(xié)議,所以在 MQTT 協(xié)議通信中,有兩個最為重要的角色,它們便是服務(wù)
    的頭像 發(fā)表于 07-30 14:55 ?2920次閱讀
    主站蜘蛛池模板: 傲视影院午夜毛片 | 欧色视频 | 另类视频色综合 | 免费午夜不卡毛片 | 久操中文 | 日本黄页网址 | 女人精aaaa片一级毛片女女 | 国产大乳孕妇喷奶水在线观看 | 1000rt人体1000欧美 | 射菊吧 | 久久九色 | 一区国产传媒国产精品 | 欧美国产在线一区 | 六月婷婷网视频在线观看 | 欧美经典三级春潮烂漫海棠红 | 手机看片1024福利 | 天堂资源最新版在线www | 午夜亚洲 | 激情97| 国产99久久九九精品免费 | 精品国产自在现线看久久 | 欧美3d成人动画在线 | 五月开心六月伊人色婷婷 | 欧美男人天堂网 | 午夜视频www| 免费国产黄网站在线观看视频 | 中文字幕久久精品波多野结 | 天天做天天爱天天爽 | 白嫩美女一级高清毛片免费看 | 亚洲女同一区二区 | 亚洲精品卡1卡二卡3卡四卡 | 国产成人啪精品午夜在线观看 | 在线天堂中文www官网 | 69xxx日本| 欧美精品一区视频 | 国产一级特黄在线视频 | 久久亚洲国产欧洲精品一 | 男男失禁play 把尿bl | 色多多视频成人影院 | 波多野结衣在线视频免费观看 | 最近高清免费观看视频 |