天天看點

非常詳細的MQTT+TLS(一)----MQTT篇

非常詳細的MQTT+TLS----MQTT篇

首先要說明的是,MQTT是一個建構在TCP/IP之上的輕量消息協定,也就是說我們要建立MQTT協定之前需要建立TCP連接配接。在TCP連接配接之上再建立MQTT通信。

1、MQTT移植:

如圖是我們從github下載下傳到的MQTT包。第一次接觸的人一定和我一樣一臉懵逼,現在

我很負責任的告訴你,你隻需要關注如下兩個檔案夾。在移植時我們需要将

非常詳細的MQTT+TLS(一)----MQTT篇

【MQTTPacket】→【src】下面的檔案移植到我們的自己平台上,這些檔案可以了解成是對接MQTT的公共檔案包,不管你是什麼平台都需要;除此之外就是需要對接自己平台的檔案,位于【MQTTClient-C】→【src】檔案夾如下圖。該檔案夾下的

非常詳細的MQTT+TLS(一)----MQTT篇

MQTTClient.c/h首先也需要移植到我們的平台上,之後就是針對于不同平台與底層對接的檔案了(什麼?你問沒有怎麼辦?沒有就自己對接啊!!!很巧的是我使用的平台也沒有,兄弟自己寫吧,相信自己,挺簡單的)。針對不同平台的對接主要分三個部分,分别為:時間、系統(互斥鎖)、Network。其中所必須的幾個函數分别是如下

非常詳細的MQTT+TLS(一)----MQTT篇

NetworkInit:該函數用于MQTT對Socket依賴關系的注冊,包含了Read、Write、Disconnect、Socket_fd(在我的代碼裡沒有connect因為我在MQTT之前先做了TCP的連接配接)

Timer:和Timer相關的函數用于MQTT擷取系統時間:擷取時間用于判斷函數的一些逾時邏輯以及Keepalive等。是以擷取時間是非常重要的,如果系統運作當機,很容易是擷取時間不正确導緻的(不要問我為什麼,問就是我在這個坑裡掙紮了很久)

系統:該部分并不是必須的,MQTT中和系統相關的部分是用“MQTT_TASK”這個宏開關的,有需要的自己搜一下,這部分有點複雜,我就不描述了。

到此為止恭喜你,MQTT已經成功的移植到了你的平台上,下一步建立連接配接吧。

2、MQTT連接配接

隻要前面移植的是正常的,相對移植來說,連接配接就簡單多了,多的不說上代碼,一看就懂了

非常詳細的MQTT+TLS(一)----MQTT篇

3、MQTT訂閱

非常詳細的MQTT+TLS(一)----MQTT篇

4、保活

隻要你平台對接的是OK的,MQTT包内部是存在一個可用的處理流程的,包括保活等操作都有處理。我們隻需要調用即可。

非常詳細的MQTT+TLS(一)----MQTT篇

OJBK,MQTT連結成功了,伺服器推送一個資料,nounou的,可以收到!收工回家-----下一篇TLS的移植。

----------努力學習,樂于分享,歡迎讨論----------

繼續閱讀