QT5.5的mqtt安装和使用

1.QT的mqtt安装 

下载地址:https://github.com/emqx/qmqtt

由于项目原因,要使用QT的mqtt模块,但之前使用的是QT5.5.1版本,而Qt5.10之前不支持mqtt,因此需要编译的方式去安装子模块,参考QT以编译方式安装mqtt进行安装。

2.使用

如果在QT中使用,在pro文件中加上:

QT += qmqtt

如果在vs中集成qt使用该模块,则需要在项目属性中包含目录加入mqtt的目录

还要在附加依赖项中加入Qt5Qmqtt.lib

使用TCP连接(Client第一个参数是根据你的服务器地址确定,这里用的是本机地址,即127.0.0.1):

#include "qmqtt.h"

QMQTT::Client *client = new QMQTT::Client(QHostAddress::LocalHost, 1883);//连接127.0.0.1:1883
client->setClientId("clientId");//客户端id
client->setUsername("user");//用户名
client->setPassword("password");//密码
client->connectToHost();//连接服务器

3.测试

测试的话采用emqx,下载地址https://www.emqx.cn/downloads#broker,根据操作系统进行下载,我用的是windows,下图所示命令打开emqx服务器:

在浏览器中输入127.0.0.1:18083,即可进入控制台

此时可以进行测试。

4.MQTT

MQTT (Message Queue Telemetry Transport),其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。

MQTT是应用层的协议。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器的通信协议。

图示如下:

具体讲解以及和socket区别可以参考这篇博客:socket和mqtt

5.基本命令

mqtt的使用包括订阅和接收等命令,具体如下代码所示:

//连接
connect(m_client, &QMQTT::Client::connected, this, [this]() {

const QString content = QLatin1String(" connected");

});

//断开连接
connect(m_client, &QMQTT::Client::disconnected, this, [this]() {

const QString content = QLatin1String(" disconnected");

});

//接收消息
connect(m_client, &QMQTT::Client::received, this, [this](const QMQTT::Message& message) {

const QString content = QString("received, Topic: %1, Message: %2").arg(message.topic()).arg(QString(message.payload()));

    });

//订阅
connect(m_client, &QMQTT::Client::subscribed, this, [this](const QString& topic, const quint8 qos) {

const QString content = QString("subscribed, Topic: %1, qos: %2").arg(topic).arg(qos);

});

//取消订阅
connect(m_client, &QMQTT::Client::unsubscribed, this, [this](const QString& topic) {

const QString content = QString("unsubscribed, Topic: %1").arg(topic);

});

//发布
connect(m_client, &QMQTT::Client::published, this, [this](const QMQTT::Message& message, quint16 msgid) {

const QString content = QString("published, Topic: %1, Message: %2, msgid:%3").arg(message.topic()).arg(QString(message.payload())).arg(msgid);

});

//错误
connect(m_client, &QMQTT::Client::error, this, [this](const QMQTT::ClientError error) {

const QString content = QString("error, value: %1").arg(error);

});

上述代码使用qt的槽和函数进行绑定,当发生相应的事件时,执行函数。

发布和订阅的命令如下所示:

QString m_pub_Topic = "pub";// pub topic
//发布
m_client->publish(QMQTT::Message(1,m_pub_Topic,QString("send").toUtf8()));
//订阅
m_client->subscribe(m_pub_Topic);

发布和订阅是以topic进行的,根据对应的topic进行发布和订阅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值