Qt加载MQTT库的方法,以及实现MQTT通信的例子(发布订阅均测试成功)

MQTT库的加载方法很多,在此推荐两篇博文(我这里就不再赘述):
Qt官方MQTT库的使用,附一个MqttClient例子
Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建
Qt官方MQTT库的使用

值得注意的是,mqtt目前主要有两个版本,一个是第三方库,一个是qt官方库,两者都需要自己下载源码生成库,另外在方法接口、函数的使用上还是有些区别,注意千万不要弄混了,我当时就是把方法弄混了折腾了好久。。。。

下面是测试代码:

连接:

//连接
void MainWindow::on_pushButton_connect_clicked()
{
    if (m_client->state() == QMqttClient::Disconnected)
    {
        ui->pushButton_connect->setText(tr("断开"));
        m_client->setHostname(ui->lineEdit_host->text());
        m_client->setPort(ui->lineEdit_port->text().toInt());
        m_client->setUsername(ui->lineEdit_user->text());
        m_client->setPassword(ui->lineEdit_pwd->text());
        m_client->setClientId("1234");

        m_client->setKeepAlive(120);

        ui->lineEdit_host->setEnabled(false);
        ui->lineEdit_port->setEnabled(false);
        ui->lineEdit_user->setEnabled(false);
        ui->lineEdit_pwd->setEnabled(false);

        m_client->connectToHost();
    }
    else
    {//断开连接
        ui->pushButton_connect->setText(tr("连接"));
        ui->lineEdit_host->setEnabled(true);
        ui->lineEdit_port->setEnabled(true);
        ui->lineEdit_user->setEnabled(true);
        ui->lineEdit_pwd->setEnabled(true);

        m_client->disconnectFromHost();
        ui->textEdit->append("连接断开!!!");
    }
}

发布

//发布
void MainWindow::on_pushButton_2_clicked()
{
    QString topicPub;
    QByteArray messagePub;
    if(m_client->state() == QMqttClient::Connected)
    {
        topicPub = ui->lineEdit_pub->text();
        messagePub = ui->lineEdit_pubMsg->text().toUtf8();

        m_client->publish(topicPub, messagePub, 0);
        return;
    }
    ui->textEdit->append("请连接后重新操作!");
}

订阅

//订阅
void MainWindow::on_pushButton_clicked()
{
    QString topicSub;
    int qos;
    if(m_client->state() == QMqttClient::Connected)
    {
        topicSub = ui->lineEdit_sub->text();
        qos = ui->spinBox->text().toInt();
        m_client->subscribe(topicSub, qos);
        return;
    }
    ui->textEdit->append("请连接后重新操作!");
}

接收消息

//收到消息
void MainWindow::topicMessageReceived(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主要就是通过服务器代理,实现两个客户端之间的通信,上图就展示了两个客户端通信成功!

MQTT客户端测试完整源码下载

温馨提示源码里面的服务器IP和用户名需要自己改,我使用的是公司服务器,暂不提供

不下载,这里也有源码参考,挺详细的

  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
C语言是一种非常强大的编程语言,它可以实现基于paho mqtt的连接、订阅和发布功能。首先,我们需要安装paho mqtt并在代码中引入相关的头文件。 在连接MQTT服务器之前,我们需要设置连接参数,例如服务器地址、端口号、客户端ID等。然后,我们可以使用paho mqtt中的相关函数创建一个MQTT客户端并连接到服务器。 连接成功后,我们可以使用MQTT订阅函数来订阅感兴趣的主题。订阅函数需要设置主题名称和订阅回调函数。当有新的消息到达时,订阅回调函数将触发并处理接收到的消息。 除了订阅主题外,我们还可以使用MQTT发布函数将消息发送给指定的主题。发布函数需要设置主题和消息内容。当调用发布函数后,消息将被发送到MQTT服务器,并可以被所有订阅了该主题的客户端接收到。 在使用完MQTT客户端后,我们需要通过调用相关函数来断开与服务器的连接,并释放资源。 总结起来,通过使用C语言和paho mqtt,我们可以实现基于MQTT的连接、订阅和发布功能。首先,设置连接参数并创建MQTT客户端。然后,使用订阅函数订阅感兴趣的主题,接收和处理接收到的消息。最后,使用发布函数发送消息到指定的主题。最后,断开与服务器的连接并释放资源。这样,我们就可以在C语言中实现基于paho mqtt的连接、订阅和发布功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值