QT+MQTT 使用MQTT官方库
开发环境:win7 64 + Qt5.9
基于MQTT协议的优良特性,和所从事的软件开发消息较多,与MQTT较为契合,因此先调研MQTT的使用。
一、MQTT官方库下载路径
github地址:https://github.com/qt/qtmqtt
我选择下载5.10版本。
二、编译下载的MQTT
我这里的编译环境是:Qt5.12.3+
编译完成后:bin目录下就是我们要的库文件:
三、新建MqttClient工程,将MQTT库作为外部库导入
新建工程目录下新建lib include目录
打开新建工程的pro文件,添加:
QT += core gui networkwin32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5MqttdINCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
将 库文件放到新建工程的lib文件下
在mainwindow.h中加入头文件引用
#include "include/qmqttclient.h"
将所有的头文件拷贝到i新建nclude文件夹下
四、链接服务器、断开服务器、订阅消息、发布下次、接收消息代码
初始化mqtt指针
QMqttClient * m_client;//mqtt client指针m_client = new QMqttClient(this);
链接断开服务器
void MainWindow::on_pushButton_clicked()
{//未连接服务器则连接if (m_client->state() == QMqttClient::Disconnected) {m_client->setHostname("127.0.0.1");m_client->setPort(1883);m_client->connectToHost();} else {//断开连接m_client->disconnectFromHost();}
}
订阅消息
void MainWindow::on_pushButton_3_clicked()
{QString topicSub ="firsttopic";;if(m_client->state() == QMqttClient::Connected){m_client->subscribe(topicSub, 0);connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));return;}
}
发布消息
void MainWindow::on_pushButton_2_clicked()
{QString topic ="firsttopic";QString mess ="第一条消息";if (m_client->publish(topic,mess.toUtf8()) == -1){}//QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message"));
}
接收消息
connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));void MainWindow::receiveMess(const QByteArray &message, const QMqttTopicName &topic)
{QString content;content = QDateTime::currentDateTime().toString() + QLatin1Char('\n');content += QLatin1String(" Received Topic: ") + topic.name() + QLatin1Char('\n');content += QLatin1String(" Message: ") + message + QLatin1Char('\n');ui->textEdit->append(content);
}
五、验证
链接服务器:
断开服务器
发布消息
通过MQTT.fx订阅程序发布的消息
接收消息
QT+MQTT 使用MQTT官方库相关推荐
- Linux下QT编程之MQTT实战
应课设要求需要使用MQTT通信协议进行网关开发,所以就花了时间捣鼓一下,也遇到很多的坑所以写了这篇博客记录一下. 1.mqtt服务器有很多在这里我选择EMQ X因为这个是开源并且还有可视化的后台管理便 ...
- mqtt服务器搭建与qt下的mqtt客户端实现
一.mqtt介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议.MQTT协议是轻量.简单. ...
- 翻译QT使用手册:将库添加到项目
将库添加到项目 除了 Qt 库之外,您还可以将其他库添加到您的项目中.该过程取决于图书馆的类型和位置.您可以添加系统库.您自己的库或第三方库.该库可以位于当前项目的构建树中,也可以位于另一个构建树中. ...
- QT入门第十天 QT安装和使用alsa库和jpeg库实现音视频录制
QT入门第十天QT安装和使用alsa库和jpeg库实现音视频录制 第一章 ALSA库的移植和使用 1.ALSA简介 2.移植ALSA (1)移植步骤 3.把移植好的库下载到开发板配置 4.使用移植好的 ...
- 【MQTT】MQTT简介+安装+使用
目录 前言 MQTT 协议简介 为何选择 MQTT MQTT 通讯运作方式 MQTT 协议帧格式 MQTT服务器搭建和使用 公共MQTT 测试服务器 MQTT服务器搭建 各种MQTT代理服务程序比较 ...
- python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)
适用于Python扩展程序包的非官方Windows二进制文件 Unofficial Windows Binaries for Python Extension Packages Pypi官方库 官方库 ...
- C++将带ui界面的qt工程封装为动态库dll
C++将带ui界面的qt工程封装为动态库dll 功能如下 完整源代码实现如下 功能如下 将工程封装后可以在别的工程下直接引用该界面,以及该界面的函数, 完整源代码实现如下 #ifndef BUILD_ ...
- Qt Creator向项目添加库
Qt Creator向项目添加库 向项目添加库 添加库 向项目添加库 除了Qt库之外,您还可以将其他库添加到您的项目中.库的添加方式取决于库的类型和位置.您可以添加系统库,自己的库或第三方库.该库可以 ...
- 这几个常用的 Go 官方库,性能居然还不如三方开源库
Go 语言官方库给我们一贯的印象是:强大.好用.但是,金无足赤,人无完人,在一些性能要求苛刻的场景例如 json 解析,某些官方库的表现不尽如人意. 本文介绍几个对标官方库的开源库,它们的性能远超前者 ...
最新文章
- 设计模式(4)-序列生成器之单例模式
- 应该使用c# 预定义类型 还是绝对不要使用预定义类型。
- python贴吧发帖脚本-分享用Python写的99收抢单小脚本,仅供学习
- java笔记:自己动手写javaEE
- 【Linux网络编程学习】使用socket实现简单服务器——多进程多线程版本
- dictionary在python中什么意思_Python 字典(Dictionary)操作详解
- 2.6 定位数据不匹配
- Android车机之TextToSpeech
- 详细通用phpstudy本地搭建网站以及cms搭建教程
- 儿童吹泡泡水简单配方_吹泡泡溶液配方大集合吹泡泡溶液最佳配方
- java 九宫格数独_玩转数独之九宫数独进阶技巧
- 服务器移动用户打不开网站图片,为什么有些网站移动网络打不开?
- 安装SQL 2000 企业版
- 如何使用keepalive实现虚拟IP
- 充电桩,成了新能源汽车发展的“拦路虎”?
- 论文投稿系列之Cover Letter写法(一)
- Linux系统基础操作管理
- Lte/5G中的RSRP、RSRQ、SINR、MCS介绍
- 宝塔数据库密码错误处理
- 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能