Qt之MQTT编译

Posted TechNomad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt之MQTT编译相关的知识,希望对你有一定的参考价值。

一、MQTT简介

  MQTT(Message Queuing Telemetry Transport)是一种轻量级的、发布-订阅模式的消息传输协议。它最初是为低带宽和不稳定网络环境设计的,以支持物联网(IoT)设备之间的高效通信。

MQTT的工作方式基于发布-订阅模型,其中包含两个角色:发布者(Publisher)和订阅者(Subscriber)。发布者负责发送消息,而订阅者负责接收感兴趣的消息。

以下是MQTT的一些核心概念:

  1. 主题(Topic):消息在MQTT中使用主题进行发布和订阅。主题是一个用于标识消息类型或内容的字符串,订阅者可以通过订阅特定主题来接收与该主题相关的消息。

  2. 发布者(Publisher):发布者是消息的发送方。它将消息发布到特定的主题,然后经由MQTT代理服务器传递给所有订阅了该主题的订阅者。

  3. 订阅者(Subscriber):订阅者是消息的接收方。它通过订阅感兴趣的主题来接收相应的消息。订阅者可以选择订阅整个主题树或特定的子主题。

  4. MQTT代理服务器(MQTT Broker):MQTT代理服务器是消息的中间件,负责接收来自发布者的消息,并将其传递给订阅者。代理服务器负责管理订阅关系、路由消息以及处理发布-订阅流程。

MQTT的特点包括:

  1. 轻量级:MQTT协议设计非常轻巧,传输的消息头部非常小,适合在带宽有限的网络环境下使用。

  2. 低能耗:由于消息头部小且通信量少,MQTT适用于低功耗设备,如传感器和物联网设备。

  3. 异步通信:MQTT支持异步通信模式,发布者和订阅者之间可以独立工作,无需实时连接。

  4. 发布-订阅模型:MQTT采用发布-订阅模型,允许多个订阅者同时接收消息,降低了系统的耦合性。

MQTT广泛应用于物联网领域,特别是在传感器网络、远程监控、智能家居和工业自动化等场景中。它提供了一种高效、可靠的消息传输机制,适应了物联网设备之间大规模通信的需求。

二、MQTT下载编译

Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,Qt官方已经提供了对MQTT的封装,但是并没有正式加入到Qt的标准库里面,所以需要自己下载源码进行编译。

Qt官方介绍文档地址

Qt官方在github上源代码地址

我这里的编译环境是:Qt5.14.1+qtmqtt-5.14.1

注意,编译这个源码之前需要安装perl,否则会报错:perl 不是内部或外部命令,也不是可运行的程序。

perl下载地址

百度云盘下载地址

下载源码后得到如下文件,直接打开工程文件准备编译

安装完Perl后会自动写入环境变量, 这时候再次编译(Release模式)QtMqtt源码,编译完成后得到以下文件:

 

Qt5.14.2开发Mqtt应用程序

1、开发环境

笔者本人开发环境:

  • 系统:Win10
  • Qt版本:QT5.14.2
  • 编译器:mingw730_xx

2、QtMqtt下载

QtMqtt官方下载链接:

https://github.com/qt/qtmqtt/

然后机智的你可能会跟着某C博客选择直接clone这个代码:

然后,你就做不下去了…很明显,大部分博主写的东西不是缺头就是缺尾,带偏了许多读者。正确的做法是,选择qtmqtt所对应的QT版本;笔者使用的是QT5.14.2,因此我们需要clone的是这个分支版本,而不是这个默认的dev分支版本,如下所示:

clone方法:

git clone -b 5.14.2 https://github.com/qt/qtmqtt.git

以上是关于Qt之MQTT编译的主要内容,如果未能解决你的问题,请参考以下文章

Qt实现mqtt客户端和mqtt服务器搭建

Linux下QT编程之MQTT实战

Qt5.14.2开发Mqtt应用程序

Qt5.14.2开发Mqtt应用程序

Qt5.14.2开发Mqtt应用程序

Qt5.14.2开发Mqtt应用程序