Qt:利用QMqttClient实现MQTT通信

1.配置Qt-MQTT环境

配置方法网上太多了,自己去看看,比如:

一文搞懂Qt-MQTT开发_qt mqtt_超级小清的博客-CSDN博客

2.知识点总结

QMqttClient类:

QtMqttClient *client=new Qt<qttClient();
client->isConnectedToHost()//---1----表示已经链接,--0----表述未连接


/*提供的信号:*/

connected();// 当客户端成功连接到MQTT代理时发出的信号。
disconnected();// 当客户端与MQTT代理断开连接时发出的信号。
error(QMQTT::ClientError error); //当客户端遇到错误时发出的信号,其中error参数指示具体的错误类型。
subscribed(const QString &topic, quint8 qos); //当客户端成功订阅一个主题时发出的信号,其中topic参数是订阅的主题,qos参数是质量服务等级。
unsubscribed(const QString &topic); //当客户端成功取消订阅一个主题时发出的信号,其中topic参数是取消订阅的主题。
messageReceived(QByteArray,QMqttTopicName); //当客户端接收到一条消息时发出的信号,其中message参数是接收到的消息
                                        //很遗憾没有提供Published相关信号

/*具体使用*/
    /*建立连接*/
             

client->setProtocolVersion(QMqttClient::MQTT_5_0);//MQTT版本
            client->setCleanSession(ui->Clean_Session->isChecked());//用于指定客户端与代理断开连接时是否清除之前的会话状态。当"Clean Session"设置为true时,表示每次连接都是一个新的会话,之前的订阅、发布等状态都会被清除。当"Clean Session"设置为false时,表示客户端与代理断开连接后,会话状态会被保留,包括之前的订阅和发布消息。
            client->setHostname(hostname);//IP地址QString类型
            client->setPort(ui->Port_lineEdit->text().toInt());//端口
            client->setClientId(ui->ClintID_lineEdit->text());//设置客户端ID
            client->setUsername(ui->UserName_lineEdit->text());//用户名
            client->setPassword(ui->PassWord_lineEdit->text().toLatin1());//密码
            client->setKeepAlive(ui->Time_lineEdit->text().toInt());//在MQTT中,Keep Alive是一个心跳机制,用于维持客户端与代理之间的活动连接。客户端通过定期发送PINGREQ消息来告知代理自己仍然处于活动状态,而代理则通过回复PINGRESP消息来确认连接的活动状态。通过保持Keep Alive间隔内的通信,可以确保连接不会因为长时间的不活动而被断开。
/*有域名用DNS解析*/
            QHostInfo info = QHostInfo::fromName(ui->IP_lineEdit->text());//DNS域名解析info.addresses().first().toString()


        /*.............订阅数据.........*/

client->subscribe(ui->Subscribe_Publish_lineEdit->text());//订阅ui->Subscribe_Publish_lineEdit->text()
connect(client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));//receiveMess(QByteArray,QMqttTopicName)需要自己去定义


        /*.................发布数据............*/

client->publish(ui->Publish_lineEdit->text(),ba);//发布主题:ui->Publish_li
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周哥~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值