Qt编译并使用MQTT

MQTT概述

     MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

  • 订阅发布
         订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。例如,如果客户端2订阅了主题A上的消息,则当客户端1发送关于该主题的消息时,它会收到通知。如果客户端3订阅了主题A和主题B,则它将接收有关这两个主题上的消息的通知。
    在这里插入图片描述

  • 会话
         每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

  • 主题
         连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

  • 主题筛选
         一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。这里通配略过。

  • 负载
         消息订阅者所具体接收的内容。

Qt MQTT
  • 概述
         Qt MQTT能够创建可以通过MQ遥测传输(MQTT)协议进行通信的应用程序和设备。它完全符合MQTT协议规范。Qt MQTT模块提供了MQTT协议规范的符合标准的实现。它使应用程序可以充当遥测显示器,并充当发布遥测数据的设备。支持的版本是MQTT 3.1,MQTT 3.1.1和MQTT 5.0。
         Qt MQTT是不包含代理的客户端解决方案。它特别适合开发嵌入式设备的遥测应用。但是,Qt MQTT没有外部依赖性,因此,已实现的客户端可以在所有受支持的Qt平台上运行。

  • 下载QtMqtt
         github地址:https://github.com/qt/qtmqtt
         git clone https://codereview.qt-project.org/qt/qtmqtt

  • 编译QtMqtt
          mingw或msvc均可构建qtmqtt.pro

  • 搭建环境
          将构建出来的lib文件夹除了.a、.so、.lib、.dll文件外全部删除;将src内所有头文件提取,头文件修改为Qt引用类类型。
          详细配置如上文件方式,自行了解。

  • 代码测试

// 简易链接,具体查看官方文档
QMqttClient *m_client = new QMqttClient;
m_client->setHostname(xxx);
m_client->setPort(yyy);
m_client->connectToHost();

// signal 数据接收
// QMqttClient::messageReceived

源码

源码下载

关注

微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。

笔者 - jxd

发布了43 篇原创文章 · 获赞 0 · 访问量 3010

猜你喜欢

转载自blog.csdn.net/automoblie0/article/details/101296329
今日推荐