简单的 MQTT 客户端
创建一个极简的遥测应用程序。

“简单 MQTT 客户端”演示了如何创建一个极简的客户端应用程序。
要使用该应用程序,首先需指定主机、端口、是否启用加密、是否启用 WebSockets 以及协议。然后点击“连接”。随后,您可以订阅一个主题并发送一条消息,您也将收到该消息。 您还可以同时运行两个实例:一个用于发布消息,另一个用于订阅,这样消息就会被传输。
simpleclient 选项
- 主机 - 您可以使用 test.mosquitto.org 或 broker.hivemq.com
- 端口 - 用于连接的端口,取决于 WebSockets 和安全选项的设置
- WebSockets - 您可以指定:选中(启用)或未选中(禁用)
- Secure - 您可以指定:选中(启用)或未选中(禁用)
- 协议 - 您可以指定
- mqtt 3.1
- mqtt 3.1.1
- mqtt 5.0
- 主题 - 用于发布或订阅的主题
- 消息 - 若要发布,则是在该主题上发送的消息
连接设置
这些是常见的配置组合,适用于 test.mosquitto.org。若使用 broker.hivemq.com,请查阅相关链接中的信息。请注意,如果启用了“安全”功能,可能需要在计算机上安装证书。此外,可能还需要在代码中将证书添加到 MQTT 客户端中。
- 端口 1883,Secure=禁用,WebSockets=禁用 - 基于 TCP 的 MQTT
- 端口 8883,安全=启用,WebSockets=禁用 - 通过 SSL 传输的 MQTT
- 端口 8080,安全=禁用,WebSockets=启用 - 基于 WebSockets 的 MQTT
- 端口 8081,安全=启用,WebSockets=启用 - 基于安全 WebSockets 的 MQTT
有关消息代理的更多信息,请参阅:
注意:端口号 1883 和 8080 未加密,因此仅适用于开发和测试目的。在生产环境中,请务必使用加密连接。
注意:WebAssembly 仅支持启用了 WebSockets 的情况。
创建客户端
首先,我们使用QMqttClient 类创建一个MQTT客户端。该类提供了用于设置唯一客户端ID以及要连接的经纪人主机名和端口的属性:
m_client = new QMqttClient(this);
m_client->setHostname(ui->lineEditHost->text());
m_client->setPort(static_cast<quint16>(ui->spinBoxPort->value()));我们未设置客户端 ID,因此系统会自动为我们生成。
接下来,我们调用 `QMqttClient::messageReceived()` 方法连接到代理,以接收发送到该代理的所有消息:
connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &message, const QMqttTopicName &topic) {
const QString content = QDateTime::currentDateTime().toString()
+ " Received Topic: "_L1
+ topic.name()
+ " Message: "_L1
+ message
+ u'\n';
ui->editLog->insertPlainText(content);
});当用户在客户端订阅主题时,我们会在指定的主题上调用QMqttClient::subscribe():
void MainWindow::on_buttonSubscribe_clicked()
{
auto subscription = m_client->subscribe(ui->lineEditTopic->text());
if (!subscription) {
QMessageBox::critical(this, u"Error"_s,
u"Could not subscribe. Is there a valid connection?"_s);
return;
}在此示例中,我们订阅了所有主题。有关如何接收特定主题消息的更多信息,请参阅MQTT 订阅示例。
有关在Qt Quick 应用程序中使用QMqttClient 类的示例,请参阅Qt Quick 订阅。
文件:
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.