首页 > 其他分享 >Qt之MQTT编译(一)

Qt之MQTT编译(一)

时间:2023-06-08 14:56:15浏览次数:44  
标签:订阅 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源码,编译完成后得到以下文件:

 

标签:订阅,Qt,编译,MQTT,消息,发布者
From: https://www.cnblogs.com/QingYiShouJiuRen/p/17466485.html

相关文章

  • 轻松实现物联网通信的利器:MQTT网关神器——FluxMQ
    FluxMQ—引领物联网新时代的高性能MQTT网关随着物联网技术的快速发展,人们越来越意识到实时、可靠、安全的数据传输对于智能化的生产与生活的重要性。因此,市场对于高性能的物联网数据传输解决方案有着强烈的需求。FluxMQ正是为满足这一需求而诞生的一款高性能、可靠且易于使用的MQ......
  • python Qt实现最简单的程序
    1、创建一个程序,实例一个对象2、让这个对象跑起来3、创建组件4、设置标题5、展示出来点击查看代码fromPySide2.QtWidgetsimportQApplication,QMessageBoxfromPySide2.QtUiToolsimportQUiLoaderif__name__=="__main__":app=QApplication(sys.argv)w......
  • QT(QPainter画圆弧)
    @TOC前言本篇文章给大家介绍一下如何使用QPainter来画圆弧。一、QPainter画圆弧方法drawArc()函数是Qt绘图类库中的一个函数,用于在画布上绘制圆弧。可以通过设置起点角度和圆弧弧度来控制圆弧的绘制效果。函数原型如下:voidQPainter::drawArc(intx,inty,intwidth,intheig......
  • 【解决问题】libevent 编译时报错 Makefile:1708: test/.deps/test_regress-tinytest.
    1开发环境linux版本:统信UOS1030(可以认为是特殊的ubuntu)开发语言:C++2报错现象截图:报错语句:make:进入目录“/home/depend/libevent-2.1.11-stable”Makefile:1708:test/.deps/test_regress-tinytest.Po:没有那个文件或目录make:***没有规则可制作目标“te......
  • AI编译器CINN v.s TVM 中CodeGen 源码解读
    如下的技术点梳理仅以「日常优化工作」为牵引点,涉及哪个模块,就具体去看哪个模块的代码。一、CINN框架CINN中CodeGen之后的代码编译主要交给了Compiler类来负责。核心的函数主要是:Build(ir::Module&,string&code)Lookup(string&fn_name)classCompilerfinal{publ......
  • MQTT协议及其在Golang中的实现
    引言:在物联网(IoT)领域中,设备之间的通信是至关重要的。为了实现设备之间的高效、轻量级通信,MQTT(MessageQueuingTelemetryTransport)协议被广泛采用。MQTT是一种基于发布/订阅模式的消息传输协议,被设计为简单、轻量级且易于实现。本文将介绍MQTT协议的核心概念,并演示如何使用Gola......
  • Qt使用wmic获取硬件序列号
    一、1.命令框输入wmic 二、#include"hardware_info.h"#include<QProcess>#include<QDebug>hardware_info::hardware_info(){}QStringhardware_info::get_cpu_id(){QStringListarg;arg<<"cpu"<<"ge......
  • xml qtreewidget 的遍历
    这些都是自己工作中遇到的,不具有普遍性 xml的递归遍历voidUserTreeWidget::travelDomElement(QDomElement&ele,QStringList&listOuterId){QDomNodenode=ele.firstChild();while(!node.isNull()){QDomElementchildElement=node.toElemen......
  • Qt AES
    一、1.第三方库https://gitcode.net/mirrors/bricke/Qt-AES?utm_source=csdn_github_accelerator2.考本相关文件 3.添加到项目里 二、voidMainWindow::on_pushButton_clicked(){//key长度为16字节,就要选择AES_128,因为16*8=128,key长度必须为16字节QString......
  • PYQT内setFocus函数的作用
    setFocus()函数是QWidget类的一个成员函数,用于将焦点设置到该QWidget上。当一个QWidget被设置为焦点时,它将成为键盘事件的接收者,可以响应键盘事件。在PyQt5中,可以使用setFocus()函数将焦点设置到任何QWidget上,例如QPushButton、QLineEdit、QTextEdit等。当用户点击这些控件时,它们......