下载地址:https://github.com/qt/qtmqtt,选择跟自己使用Qt版本一致的分支
编译环境:Ubuntu1804+Qt5.13.2
cd qtmqtt
mkdir .git
mkdir build && cd build
qmake .. (此步执行报错的话请选用qmake的绝对路径)
make
make install
pro 文件增加
QT += mqtt
.h文件主要代码
#include void initMqttClinet();private slots:void on_pBtn_Connect_clicked();void stateChangedSlot(QMqttClient::ClientState state);void errorChangedSlot(QMqttClient::ClientError error);void messageReceivedSlot(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName());void on_pBtn_Publish_clicked();void on_pBtn_Subscribe_clicked();void on_pBtn_Ping_clicked();private:QMqttClient* mqttClient;
.cpp文件主要代码
void MainWindow::initMqttClinet()
{mqttClient = new QMqttClient();mqttClient->setHostname(ui->lineEditHost->text().trimmed());mqttClient->setPort(1883);mqttClient->setProtocolVersion(QMqttClient::MQTT_3_1_1);mqttClient->setClientId(ui->lineEditClientId->text().trimmed());mqttClient->setUsername("admin");mqttClient->setPassword("password");connect(mqttClient, &QMqttClient::stateChanged, this, &MainWindow::stateChangedSlot);connect(mqttClient, &QMqttClient::errorChanged, this, &MainWindow::errorChangedSlot);connect(mqttClient, &QMqttClient::messageReceived, this, &MainWindow::messageReceivedSlot);mqttClient->connectToHost();
}void MainWindow::on_pBtn_Connect_clicked()
{initMqttClinet();
}void MainWindow::stateChangedSlot(QMqttClient::ClientState state)
{QString info("");if(state == 0){info = QString("mqtt disconnected. error:%1" ).arg(mqttClient->error());}else if(state == 1){info = "mqtt connecting";}else if(state == 2){info = QString("mqtt connected. hostname:%1").arg(mqttClient->hostname());}ui->editLog->insertPlainText(QDateTime::currentDateTime().toString()+ QString("state:%1 info:%2\n").arg(state).arg(info));
}void MainWindow::errorChangedSlot(QMqttClient::ClientError error)
{qDebug()<<__FILE__<<__LINE__<editLog->insertPlainText(QString("error:%1").arg(error));
}void MainWindow::messageReceivedSlot(const QByteArray &message, const QMqttTopicName &topic)
{qDebug()<<__FILE__<<__LINE__<editLog->insertPlainText(content);
}void MainWindow::on_pBtn_Publish_clicked() // 发布
{if(mqttClient == nullptr){ui->editLog->insertPlainText(QString("[Error] Before publish, Please init mqtt client.\n"));return;}if (mqttClient->publish(ui->lineEditTopic->text(),ui->lineEditMessage->text().toUtf8()) == -1){ui->editLog->insertPlainText(QString("[Error] Could not publish message.\n"));}
}void MainWindow::on_pBtn_Subscribe_clicked() // 订阅
{if(mqttClient == nullptr){ui->editLog->insertPlainText(QString("[Error] Before subscribe, Please init mqtt client.\n"));return;}auto subscription = mqttClient->subscribe(ui->lineEditTopic->text());if (!subscription) {ui->editLog->insertPlainText(QString("[Error] Could not subscribe. Is there a valid connection?\n"));return;}
}void MainWindow::on_pBtn_Ping_clicked()
{bool res = mqttClient->requestPing();ui->editLog->insertPlainText(QString("[RESULT] PING? %1\n").arg(res));
}
界面截图
下载地址:https://mosquitto.org/download/
参考连接:https://blog.csdn.net/linyibin_123/article/details/128315580
下载地址:https://www.emqx.com/zh/try?product=broker
安装方法如界面下图所示
打开浏览器测试服务端
输入url:http://127.0.0.1:18083打开界面如下图所示则表示服务器端已启动
初次登录时,默认用户名为admin,密码为public;需要根据提示自行设置密码。
1883(暴露给外部的MQTT服务端口),18083(服务器控制面板端口)
上一篇: 最新观看《牧马人》心得体会
下一篇: 测量实习的心得体会