非常详细的MQTT+TLS(一)----MQTT篇

非常详细的MQTT+TLS----MQTT篇

首先要说明的是,MQTT是一个构建在TCP/IP之上的轻量消息协议,也就是说我们要创建MQTT协议之前需要创建TCP连接。在TCP连接之上再创建MQTT通信。

1、MQTT移植:

如图是我们从github下载到的MQTT包。第一次接触的人一定和我一样一脸懵逼,现在
我很负责任的告诉你,你只需要关注如下两个文件夹。在移植时我们需要将在这里插入图片描述【MQTTPacket】→【src】下面的文件移植到我们的自己平台上,这些文件可以理解成是对接MQTT的公共文件包,不管你是什么平台都需要;除此之外就是需要对接自己平台的文件,位于【MQTTClient-C】→【src】文件夹如下图。该文件夹下的在这里插入图片描述

MQTTClient.c/h首先也需要移植到我们的平台上,之后就是针对于不同平台与底层对接的文件了(什么?你问没有怎么办?没有就自己对接啊!!!很巧的是我使用的平台也没有,兄弟自己写吧,相信自己,挺简单的)。针对不同平台的对接主要分三个部分,分别为:时间、系统(互斥锁)、Network。其中所必须的几个函数分别是如下
在这里插入图片描述

NetworkInit:该函数用于MQTT对Socket依赖关系的注册,包含了Read、Write、Disconnect、Socket_fd(在我的代码里没有connect因为我在MQTT之前先做了TCP的连接)
Timer:和Timer相关的函数用于MQTT获取系统时间:获取时间用于判断函数的一些超时逻辑以及Keepalive等。因此获取时间是非常重要的,如果系统运行死机,很容易是获取时间不正确导致的(不要问我为什么,问就是我在这个坑里挣扎了很久)
系统:该部分并不是必须的,MQTT中和系统相关的部分是用“MQTT_TASK”这个宏开关的,有需要的自己搜一下,这部分有点复杂,我就不描述了。
到此为止恭喜你,MQTT已经成功的移植到了你的平台上,下一步建立连接吧。

2、MQTT连接

只要前面移植的是正常的,相对移植来说,连接就简单多了,多的不说上代码,一看就懂了
在这里插入图片描述

3、MQTT订阅

在这里插入图片描述

4、保活

只要你平台对接的是OK的,MQTT包内部是存在一个可用的处理流程的,包括保活等操作都有处理。我们只需要调用即可。
在这里插入图片描述

OJBK,MQTT链接成功了,服务器推送一个数据,nounou的,可以收到!收工回家-----下一篇TLS的移植。

----------努力学习,乐于分享,欢迎讨论----------

猜你喜欢

转载自blog.csdn.net/qq_43448742/article/details/108266475