Einfacher MQTT-Client

Erstellung einer minimalistischen Telemetrie-Anwendung.

Simple MQTT Client demonstriert, wie man eine minimalistische Client-Anwendung erstellt.

Um die Anwendung zu verwenden, geben Sie zunächst einen Broker wie test.mosquitto.org oder broker.hivemq.com und die Portnummer 1883 an und stellen eine Verbindung zu ihm her. Anschließend können Sie ein Thema abonnieren und eine Nachricht senden, die Sie auch erhalten.

Hinweis: Die Portnummer 1883 ist nicht verschlüsselt und eignet sich daher nur für Entwicklungs- und Testzwecke. In der Produktion sollten Sie immer verschlüsselte Verbindungen verwenden.

Erstellen eines Clients

Zunächst verwenden wir die Klasse QMqttClient, um einen MQTT-Client zu erstellen. Die Klasse bietet Eigenschaften zum Festlegen einer eindeutigen Client-ID sowie des Hostnamens und des Ports des Brokers, mit dem eine Verbindung hergestellt werden soll:

    m_client = new QMqttClient(this);
    m_client->setHostname(ui->lineEditHost->text());
    m_client->setPort(static_cast<quint16>(ui->spinBoxPort->value()));

Wir legen die Client-ID nicht fest, daher wird sie automatisch für uns generiert.

Als nächstes stellen wir eine Verbindung zu QMqttClient::messageReceived() her, um alle an den Broker gesendeten Nachrichten zu empfangen:

    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);
    });

Wenn Benutzer Themen im Client abonnieren, rufen wir QMqttClient::subscribe() für das angegebene Thema auf:

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;
    }

In diesem Beispiel abonnieren wir alle Themen. Weitere Informationen über den Empfang von Nachrichten zu bestimmten Themen finden Sie im Beispiel MQTT-Abonnements.

Ein Beispiel für die Verwendung der Klasse QMqttClient in einer Anwendung Qt Quick finden Sie unter Qt Quick Subscription.

Dateien:

© 2025 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.