QCoapClient Class

Die Klasse QCoapClient ermöglicht es der Anwendung, CoAP-Anfragen zu senden und Antworten zu empfangen. Mehr...

Kopfzeile: #include <QCoapClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS Coap)
target_link_libraries(mytarget PRIVATE Qt6::Coap)
qmake: QT += coap
Vererbungen: QObject

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr)
virtual ~QCoapClient()
void cancelObserve(QCoapReply *notifiedReply)
void cancelObserve(const QUrl &url)
QCoapReply *deleteResource(const QCoapRequest &request)
QCoapReply *deleteResource(const QUrl &url)
void disconnect()
QCoapResourceDiscoveryReply *discover(const QUrl &url, const QString &discoveryPath = QLatin1String("/.well-known/core"))
QCoapResourceDiscoveryReply *discover(QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4, int port = QtCoap::DefaultPort, const QString &discoveryPath = QLatin1String("/.well-known/core"))
QCoapReply *get(const QCoapRequest &request)
QCoapReply *get(const QUrl &url)
QCoapReply *observe(const QCoapRequest &request)
QCoapReply *observe(const QUrl &url)
QCoapReply *post(const QCoapRequest &request, const QByteArray &data = QByteArray())
QCoapReply *post(const QCoapRequest &request, QIODevice *device)
QCoapReply *post(const QUrl &url, const QByteArray &data = QByteArray())
QCoapReply *put(const QCoapRequest &request, const QByteArray &data = QByteArray())
QCoapReply *put(const QCoapRequest &request, QIODevice *device)
QCoapReply *put(const QUrl &url, const QByteArray &data = QByteArray())
void setAckRandomFactor(double ackRandomFactor)
void setAckTimeout(uint ackTimeout)
void setBlockSize(quint16 blockSize)
void setMaximumRetransmitCount(uint maximumRetransmitCount)
void setMaximumServerResponseDelay(uint responseDelay)
void setMinimumTokenSize(int tokenSize)
void setSecurityConfiguration(const QCoapSecurityConfiguration &configuration)
void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)

Signale

void error(QCoapReply *reply, QtCoap::Error error)
void finished(QCoapReply *reply)
void responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender)

Detaillierte Beschreibung

Die Klasse QCoapClient enthält Signale, die ausgelöst werden, wenn die Antwort auf eine gesendete Anfrage eingetroffen ist.

Die Anwendung kann einen QCoapClient verwenden, um Anfragen über ein CoAP-Netzwerk zu senden. Sie bietet Funktionen für Standardanfragen: jede gibt ein QCoapReply Objekt zurück, an das die Antwortdaten geliefert werden sollen; diese können gelesen werden, wenn das finished() Signal eintrifft.

Eine einfache Anfrage kann mit gesendet werden:

QCoapClient *client = new QCoapClient(this);
connect(client, &QCoapClient::finished, this, &TestClass::slotFinished);
client->get(QCoapRequest(Qurl("coap://coap.me/test")));

Hinweis: Nachdem die Bearbeitung der Anfrage abgeschlossen ist, liegt es in der Verantwortung des Benutzers, das Objekt QCoapReply zu einem geeigneten Zeitpunkt zu löschen. Löschen Sie es nicht direkt innerhalb des mit finished() verbundenen Slots. Sie können die Funktion deleteLater() verwenden.

Sie können auch eine Beobachtungsanforderung verwenden. Diese kann wie oben beschrieben oder bequemer mit dem Signal QCoapReply::notified() verwendet werden:

QCoapRequest request = QCoapRequest(Qurl("coap://coap.me/obs"));
QCoapReply *reply = client->observe(request);
connect(reply, &QCoapReply::notified, this, &TestClass::slotNotified);

Und die Beobachtung kann mit abgebrochen werden:

client->cancelObserve(reply);

Wenn eine Antwort eintrifft, sendet der QCoapClient ein finished()-Signal.

Hinweis: Bei einer Discovery-Anfrage ist das zurückgegebene Objekt ein QCoapResourceDiscoveryReply. Es kann auf die gleiche Weise wie ein QCoapReply verwendet werden, enthält aber auch eine Liste von Ressourcen.

Siehe auch QCoapRequest, QCoapReply, und QCoapResourceDiscoveryReply.

Dokumentation der Mitgliedsfunktionen

[explicit] QCoapClient::QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr)

Konstruiert ein QCoapClient-Objekt für das angegebene securityMode und setzt parent als übergeordnetes Objekt.

Die Vorgabe für securityMode ist QtCoap::NoSecurity, wodurch die Sicherheit deaktiviert wird.

Dies stellt eine Verbindung über eine QCoapQUdpConnection her; um einen benutzerdefinierten Transport zu verwenden, muss die Unterklasse QCoapConnection verwendet und eine Instanz an einen der anderen Konstruktoren übergeben werden.

[virtual noexcept] QCoapClient::~QCoapClient()

Zerstört das Objekt QCoapClient und gibt alle Ressourcen frei. Beachten Sie, dass QCoapReply Objekte, die von dieser Klasse zurückgegeben werden, den QCoapClient Satz als ihre Eltern haben, was bedeutet, dass sie zusammen mit diesem gelöscht werden.

void QCoapClient::cancelObserve(QCoapReply *notifiedReply)

Dies ist eine überladene Funktion.

Bricht die Beobachtung einer Ressource unter Verwendung der Antwort notifiedReply ab, die von der Methode observe() zurückgegeben wird.

Siehe auch observe().

void QCoapClient::cancelObserve(const QUrl &url)

Dies ist eine überladene Funktion.

Bricht die Beobachtung einer durch url identifizierten Ressource ab.

Siehe auch observe().

QCoapReply *QCoapClient::deleteResource(const QCoapRequest &request)

Sendet die request mit der DELETE-Methode und gibt ein neues QCoapReply Objekt zurück.

Siehe auch get(), put(), post(), observe(), und discover().

QCoapReply *QCoapClient::deleteResource(const QUrl &url)

Dies ist eine überladene Funktion.

Sendet eine DELETE-Anfrage an das Ziel url.

Siehe auch get(), put(), post(), observe(), und discover().

void QCoapClient::disconnect()

Schließt die offenen Sockets und Verbindungen, um den Transport freizugeben.

Hinweis: Im sicheren Modus muss dies aufgerufen werden, bevor die Sicherheitskonfiguration geändert oder eine Verbindung zu einem anderen Server hergestellt wird.

Siehe auch setSecurityConfiguration().

QCoapResourceDiscoveryReply *QCoapClient::discover(const QUrl &url, const QString &discoveryPath = QLatin1String("/.well-known/core"))

Ermittelt die unter der angegebenen Adresse url verfügbaren Ressourcen und gibt ein neues Objekt QCoapResourceDiscoveryReply zurück, das das Signal QCoapResourceDiscoveryReply::discovered() ausgibt, sobald die Antwort eintrifft.

Der Erkennungspfad ist standardmäßig "/.well-known/core", kann aber geändert werden, indem ein anderer Pfad an discoveryPath übergeben wird. Die Erkennung wird in RFC 6690 beschrieben.

Siehe auch get(), post(), put(), deleteResource(), und observe().

QCoapResourceDiscoveryReply *QCoapClient::discover(QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4, int port = QtCoap::DefaultPort, const QString &discoveryPath = QLatin1String("/.well-known/core"))

Dies ist eine überladene Funktion.

Ermittelt die Ressourcen, die an den Endpunkten verfügbar sind, die sich dem group unter der angegebenen port angeschlossen haben. Gibt ein neues QCoapResourceDiscoveryReply Objekt zurück, das das Signal QCoapResourceDiscoveryReply::discovered() aussendet, sobald eine Antwort eintrifft. Die group ist eine der CoAP-Multicast-Gruppenadressen und standardmäßig QtCoap::AllCoapNodesIPv4.

Der Erkennungspfad ist standardmäßig "/.well-known/core", kann aber geändert werden, indem ein anderer Pfad an discoveryPath übergeben wird. Die Erkennung wird in RFC 6690 beschrieben.

Siehe auch get(), post(), put(), deleteResource(), und observe().

[signal] void QCoapClient::error(QCoapReply *reply, QtCoap::Error error)

Dieses Signal wird ausgegeben, wenn ein Fehler auftritt. Der Parameter reply kann nullptr sein, wenn der Fehler nicht mit einem bestimmten QCoapReply zusammenhängt. Der Parameter error enthält den Fehlercode.

Siehe auch finished(), QCoapReply::error(), und QCoapReply::finished().

[signal] void QCoapClient::finished(QCoapReply *reply)

Dieses Signal wird zusammen mit dem Signal QCoapReply::finished() ausgegeben, wenn eine CoAP-Antwort empfangen wurde, entweder nach einem Erfolg oder einem Fehler. Der Parameter reply enthält einen Zeiger auf die gerade empfangene Antwort.

Siehe auch error(), QCoapReply::finished(), und QCoapReply::error().

QCoapReply *QCoapClient::get(const QCoapRequest &request)

Sendet die request mit der GET-Methode und gibt ein neues QCoapReply Objekt zurück.

Siehe auch post(), put(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::get(const QUrl &url)

Dies ist eine überladene Funktion.

Sendet eine GET-Anfrage an url und gibt ein neues QCoapReply Objekt zurück.

Siehe auch post(), put(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::observe(const QCoapRequest &request)

Sendet eine Anfrage zur Beobachtung des Ziels request und gibt ein neues QCoapReply Objekt zurück, das das Signal QCoapReply::notified() aussendet, sobald eine neue Benachrichtigung eintrifft.

Siehe auch cancelObserve(), get(), post(), put(), deleteResource(), und discover().

QCoapReply *QCoapClient::observe(const QUrl &url)

Dies ist eine überladene Funktion.

Sendet eine Anfrage zur Beobachtung des Ziels url und gibt ein neues QCoapReply Objekt zurück, das das Signal QCoapReply::notified() aussendet, sobald eine neue Benachrichtigung eintrifft.

Siehe auch cancelObserve(), get(), post(), put(), deleteResource(), und discover().

QCoapReply *QCoapClient::post(const QCoapRequest &request, const QByteArray &data = QByteArray())

Sendet die request mit der POST-Methode und gibt ein neues QCoapReply Objekt zurück. Verwendet data als Nutzdaten für diese Anfrage. Wenn data leer ist, wird die Nutzlast von request verwendet.

Siehe auch get(), put(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::post(const QCoapRequest &request, QIODevice *device)

Dies ist eine überladene Funktion.

Sendet die request mit der POST-Methode und gibt ein neues QCoapReply Objekt zurück. Verwendet den Inhalt von device als Nutzlast für diese Anfrage. Ein Null-Gerät wird als leerer Inhalt behandelt.

Hinweis: Das Gerät muss geöffnet und lesbar sein, bevor diese Funktion aufgerufen wird.

Siehe auch get(), put(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::post(const QUrl &url, const QByteArray &data = QByteArray())

Dies ist eine überladene Funktion.

Sendet eine POST-Anfrage an url und gibt ein neues QCoapReply Objekt zurück. Verwendet data als Nutzdaten für diese Anfrage.

Siehe auch get(), put(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::put(const QCoapRequest &request, const QByteArray &data = QByteArray())

Sendet die request mit der PUT-Methode und gibt ein neues QCoapReply Objekt zurück. Verwendet data als Nutzdaten für diese Anfrage. Wenn data leer ist, wird die Nutzlast von request verwendet.

Siehe auch get(), post(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::put(const QCoapRequest &request, QIODevice *device)

Dies ist eine überladene Funktion.

Sendet die request mit der PUT-Methode und gibt ein neues QCoapReply Objekt zurück. Verwendet den Inhalt von device als Nutzlast für diese Anfrage. Ein Null-Gerät wird als leerer Inhalt behandelt.

Hinweis: Das Gerät muss geöffnet und lesbar sein, bevor diese Funktion aufgerufen wird.

Siehe auch get(), post(), deleteResource(), observe(), und discover().

QCoapReply *QCoapClient::put(const QUrl &url, const QByteArray &data = QByteArray())

Dies ist eine überladene Funktion.

Sendet eine PUT-Anfrage an url und gibt ein neues QCoapReply Objekt zurück. Verwendet data als Nutzdaten für diese Anfrage.

Siehe auch get(), post(), deleteResource(), observe(), und discover().

[signal] void QCoapClient::responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender)

Dieses Signal wird ausgesendet, wenn eine Unicast-Antwort auf eine Multicast-Anfrage eintrifft. Der Parameter reply enthält einen Zeiger auf die soeben empfangene Antwort, message enthält die Nutzlast und die Details der Nachricht, und sender enthält die Absenderadresse.

Siehe auch error(), QCoapReply::finished(), und QCoapReply::error().

void QCoapClient::setAckRandomFactor(double ackRandomFactor)

Setzt den in RFC 7252 - Abschnitt 4.2 definierten Wert ACK_RANDOM_FACTOR auf ackRandomFactor. Dieser Wert sollte größer oder gleich 1 sein. Der Standardwert ist 1,5.

Siehe auch setAckTimeout().

void QCoapClient::setAckTimeout(uint ackTimeout)

Setzt den in RFC 7252 - Abschnitt 4.2 definierten Wert ACK_TIMEOUT auf ackTimeout in Millisekunden. Der Standardwert ist 2000 ms.

Diese Zeitüberschreitung gilt nur für bestätigungsfähige Nachrichten. Der tatsächliche Timeout für zuverlässige Übertragungen ist ein Zufallswert zwischen ACK_TIMEOUT und ACK_TIMEOUT * ACK_RANDOM_FACTOR.

Siehe auch setAckRandomFactor().

void QCoapClient::setBlockSize(quint16 blockSize)

Legt die maximale Blockgröße fest, die das Protokoll beim Senden von Anfragen und Empfangen von Antworten an blockSize verwendet. Die Blockgröße muss eine Potenz von zwei sein.

void QCoapClient::setMaximumRetransmitCount(uint maximumRetransmitCount)

Setzt den in RFC 7252 - Abschnitt 4.2 definierten Wert MAX_RETRANSMIT auf maximumRetransmitCount. Dieser Wert sollte kleiner als oder gleich 25 sein. Der Standardwert ist 4.

void QCoapClient::setMaximumServerResponseDelay(uint responseDelay)

Setzt den Wert MAX_SERVER_RESPONSE_DELAY auf responseDelay in Millisekunden. Der Standardwert ist 250 Sekunden.

Wie in RFC 7390 - Abschnitt 2.5 definiert, ist MAX_SERVER_RESPONSE_DELAY die erwartete maximale Antwortverzögerung für alle Server, an die der Client eine Multicast-Anfrage senden kann.

void QCoapClient::setMinimumTokenSize(int tokenSize)

Legt die Mindestgröße des Tokens auf tokenSize in Bytes fest. Aus Sicherheitsgründen wird empfohlen, Token mit einer Länge von mindestens 4 Byte zu verwenden. Der Standardwert für diesen Parameter ist 4 Byte.

void QCoapClient::setSecurityConfiguration(const QCoapSecurityConfiguration &configuration)

Setzt die Sicherheitskonfigurationsparameter von configuration. Die Konfiguration wird ignoriert, wenn der Modus QtCoap::NoSecurity verwendet wird.

Hinweis: Diese Methode muss aufgerufen werden, bevor der Handshake beginnt. Wenn Sie die Sicherheitskonfiguration ändern müssen, nachdem Sie eine sichere Verbindung mit dem Server hergestellt haben, muss der Client zuerst getrennt werden.

Siehe auch disconnect().

void QCoapClient::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)

Setzt den Socket QUdpSocket option auf value.

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