1. 前言
IOT嵌入式开发中,三方交互MQTT已经成为很多人的首选。但是MQTT通常只用来做小数据量的业务传输。文件的上传和下载主要还是用http实现。最近实现远程日志查询时,选择通过MQTT实现文件上传。下面分析下实现逻辑。
2. MQTT文件上传设计
MQTT文件上传分为以下几步:
2.1 文件压缩
文件压缩类型可以有多种可选: 源文件 / zip / .tar.gz / .tar
具体类型根据文件大小和收发双发支持类型具体定义。
发送文件信息,包含文件大小,压缩格式,分包总数。并作ack确认。
2.2 文件分包
嵌入式设备内存资源相对较小,且MQTT是居于CS模式,交互双方是C->S->C, 降低Broker负担,逻辑上会设计分包传输。
2.3 文件编码
文件内容格式有二进制或者字符串,协议设计上通过base64编码成字符串,然后做MD5技算。
2.4 MQTT传输
将base64编码后的数据打包成mqtt对应的文件传输协议包,发送到指定主题。
文件传输,我们业务上采用req->ack方式,每包都做ack确认。收到ack确认包后,才做下一帧传输。如果没收到确认包,可增加重传机制。
循环执行2.3->2.4步骤,直到整包文件传输结束。
2.5 传输完成
文件传输完成后,设备上报文件传输完成包,并带上对应的MD5校验。
3. 文件接收
3.1 接收文件信息.
3.2. 接收文件分包,直到接收文件传输完成。
3.2 通过MD5校验确认包完整性.
3.3 base64解码。
3.4 根据文件的压缩格式解压得到目标文件。
4. 完成
至此完成mqtt文件的发送和接收完整设计思路。
文章来源地址https://www.toymoban.com/news/detail-509616.html
文章来源:https://www.toymoban.com/news/detail-509616.html
到了这里,关于MQTT文件传输 -1. 设计篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!