QCoapClient Class
La classe QCoapClient permet à l'application d'envoyer des requêtes CoAP et de recevoir des réponses. Plus d'informations...
| En-tête : | #include <QCoapClient> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Coap)target_link_libraries(mytarget PRIVATE Qt6::Coap) |
| qmake : | QT += coap |
| Héritages : | QObject |
Note : Toutes les fonctions de cette classe sont réentrantes.
Propriétés
(since 6.11)bindInterface : QNetworkInterface
Fonctions publiques
| QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr) | |
| virtual | ~QCoapClient() |
| QNetworkInterface | bindInterface() const |
| 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 | setBindInterface(const QNetworkInterface &iface) |
| 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) |
Signaux
| void | bindInterfaceChanged(const QNetworkInterface &iface) |
| void | error(QCoapReply *reply, QtCoap::Error error) |
| void | finished(QCoapReply *reply) |
| void | responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender) |
Description détaillée
La classe QCoapClient contient des signaux qui sont déclenchés lorsque la réponse à une requête envoyée est arrivée.
L'application peut utiliser un QCoapClient pour envoyer des requêtes sur un réseau CoAP. Elle fournit des fonctions pour les requêtes standard : chacune renvoie un objet QCoapReply, auquel les données de réponse doivent être livrées ; celles-ci peuvent être lues lorsque le signal finished() arrive.
Une requête simple peut être envoyée avec :
QCoapClient *client = new QCoapClient(this); connect(client, &QCoapClient::finished, this, &TestClass::slotFinished); client->get(QCoapRequest(Qurl("coap://coap.me/test")));
Remarque : une fois le traitement de la demande terminé, il incombe à l'utilisateur de supprimer l'objet QCoapReply au moment opportun. Ne le supprimez pas directement à l'intérieur du slot connecté à finished(). Vous pouvez utiliser la fonction deleteLater().
Vous pouvez également utiliser une demande d'observation. Celle-ci peut être utilisée de la même manière que ci-dessus, ou plus commodément avec le signal QCoapReply::notified() :
QCoapRequest request = QCoapRequest(Qurl("coap://coap.me/obs")); QCoapReply *reply = client->observe(request); connect(reply, &QCoapReply::notified, this, &TestClass::slotNotified);
Et l'observation peut être annulée avec :
client->cancelObserve(reply);
Lorsqu'une réponse arrive, le QCoapClient émet un signal finished().
Note : Pour une demande de découverte, l'objet renvoyé est un QCoapResourceDiscoveryReply. Il peut être utilisé de la même manière qu'un QCoapReply mais contient également une liste de ressources.
Voir également QCoapRequest, QCoapReply, et QCoapResourceDiscoveryReply.
Documentation sur les propriétés
[since 6.11] bindInterface : QNetworkInterface
Cette propriété contient l'interface réseau à utiliser par la socket
La valeur par défaut est un objet invalid QNetworkInterface , ce qui signifie que les paquets entrants seront acceptés à partir de toutes les interfaces réseau. De même, toutes les interfaces réseau peuvent être utilisées pour envoyer des paquets sortants.
Lorsqu'une interface réseau valide est spécifiée, les paquets entrants ne seront acceptés qu'à partir de cette interface. De même, les paquets sortants ne seront envoyés qu'en utilisant cette interface.
La modification de la propriété n'a d'effet que la prochaine fois que le client se lie à la socket, alors assurez-vous d'appeler disconnect() s'il y a eu une communication antérieure.
Cette propriété a été introduite dans Qt 6.11.
Fonctions d'accès :
| QNetworkInterface | bindInterface() const |
| void | setBindInterface(const QNetworkInterface &iface) |
Notifier signal :
| void | bindInterfaceChanged(const QNetworkInterface &iface) |
Member Function Documentation
[explicit] QCoapClient::QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr)
Construit un objet QCoapClient pour l'objet securityMode donné et définit parent comme l'objet parent.
La valeur par défaut pour securityMode est QtCoap::NoSecurity, qui désactive la sécurité.
[virtual noexcept] QCoapClient::~QCoapClient()
Détruit l'objet QCoapClient et libère les ressources. Notez que les objets QCoapReply renvoyés par cette classe ont pour parents l'ensemble QCoapClient, ce qui signifie qu'ils seront supprimés en même temps que lui.
void QCoapClient::cancelObserve(QCoapReply *notifiedReply)
Annule l'observation d'une ressource en utilisant la réponse notifiedReply renvoyée par la méthode observe().
Il s'agit d'une fonction surchargée.
Voir aussi observe().
void QCoapClient::cancelObserve(const QUrl &url)
Annule l'observation d'une ressource identifiée par url.
Il s'agit d'une fonction surchargée.
Voir aussi observe().
QCoapReply *QCoapClient::deleteResource(const QCoapRequest &request)
Envoie l'objet request à l'aide de la méthode DELETE et renvoie un nouvel objet QCoapReply.
Voir aussi get(), put(), post(), observe() et discover().
QCoapReply *QCoapClient::deleteResource(const QUrl &url)
Envoie une requête DELETE à la cible url.
Il s'agit d'une fonction surchargée.
Voir aussi get(), put(), post(), observe() et discover().
void QCoapClient::disconnect()
Ferme les sockets et les connexions ouvertes pour libérer le transport.
Remarque : dans le mode sécurisé, cette fonction doit être appelée avant de modifier la configuration de sécurité ou de se connecter à un autre serveur.
Voir aussi setSecurityConfiguration().
QCoapResourceDiscoveryReply *QCoapClient::discover(const QUrl &url, const QString &discoveryPath = QLatin1String("/.well-known/core"))
Découvre les ressources disponibles à l'adresse url et renvoie un nouvel objet QCoapResourceDiscoveryReply qui émet le signal QCoapResourceDiscoveryReply::discovered() lorsque la réponse arrive.
Le chemin de découverte est par défaut "/.well-known/core", mais il peut être modifié en passant un chemin différent à discoveryPath. La découverte est décrite dans la RFC 6690.
Voir aussi get(), post(), put(), deleteResource() et observe().
QCoapResourceDiscoveryReply *QCoapClient::discover(QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4, int port = QtCoap::DefaultPort, const QString &discoveryPath = QLatin1String("/.well-known/core"))
Découvre les ressources disponibles aux points d'extrémité qui ont rejoint le site group à l'adresse port donnée. Renvoie un nouvel objet QCoapResourceDiscoveryReply qui émet le signal QCoapResourceDiscoveryReply::discovered() lorsqu'une réponse arrive. L'adresse group est l'une des adresses de groupe de multidiffusion CoAP et correspond par défaut à QtCoap::AllCoapNodesIPv4.
Le chemin de découverte est par défaut "/.well-known/core", mais peut être modifié en passant un chemin différent à discoveryPath. La découverte est décrite dans la RFC 6690.
Il s'agit d'une fonction surchargée.
Voir aussi get(), post(), put(), deleteResource() et observe().
[signal] void QCoapClient::error(QCoapReply *reply, QtCoap::Error error)
Ce signal est émis lorsqu'une erreur se produit. Le paramètre reply peut être nullptr si l'erreur n'est pas liée à un QCoapReply spécifique. Le paramètre error contient le code d'erreur.
Voir également finished(), QCoapReply::error() et QCoapReply::finished().
[signal] void QCoapClient::finished(QCoapReply *reply)
Ce signal est émis avec le signal QCoapReply::finished() à chaque fois qu'une réponse CoAP est reçue, après un succès ou une erreur. Le paramètre reply contient un pointeur sur la réponse qui vient d'être reçue.
Voir également error(), QCoapReply::finished() et QCoapReply::error().
QCoapReply *QCoapClient::get(const QCoapRequest &request)
Envoie le site request à l'aide de la méthode GET et renvoie un nouvel objet QCoapReply.
Voir aussi post(), put(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::get(const QUrl &url)
Envoie une requête GET à url et renvoie un nouvel objet QCoapReply.
Il s'agit d'une fonction surchargée.
Voir aussi post(), put(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::observe(const QCoapRequest &request)
Envoie une demande d'observation de la cible request et renvoie un nouvel objet QCoapReply qui émet le signal QCoapReply::notified() chaque fois qu'une nouvelle notification arrive.
Voir aussi cancelObserve(), get(), post(), put(), deleteResource() et discover().
QCoapReply *QCoapClient::observe(const QUrl &url)
Envoie une demande d'observation de la cible url et renvoie un nouvel objet QCoapReply qui émet le signal QCoapReply::notified() chaque fois qu'une nouvelle notification arrive.
Il s'agit d'une fonction surchargée.
Voir aussi cancelObserve(), get(), post(), put(), deleteResource() et discover().
QCoapReply *QCoapClient::post(const QCoapRequest &request, const QByteArray &data = QByteArray())
Envoie l'adresse request en utilisant la méthode POST et renvoie un nouvel objet QCoapReply. Utilise data comme charge utile pour cette demande. Si data est vide, c'est le contenu de request qui sera utilisé.
Voir aussi get(), put(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::post(const QCoapRequest &request, QIODevice *device)
Envoie l'adresse request à l'aide de la méthode POST et renvoie un nouvel objet QCoapReply. Utilise le contenu de device comme charge utile pour cette demande. Un appareil nul est traité comme un contenu vide, auquel cas le contenu de request sera utilisé.
Note : Le dispositif doit être ouvert et lisible avant d'appeler cette fonction.
Il s'agit d'une fonction surchargée.
Voir aussi get(), put(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::post(const QUrl &url, const QByteArray &data = QByteArray())
Envoie une requête POST à url et renvoie un nouvel objet QCoapReply. Utilise data comme charge utile pour cette requête.
Il s'agit d'une fonction surchargée.
Voir aussi get(), put(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::put(const QCoapRequest &request, const QByteArray &data = QByteArray())
Envoie le site request à l'aide de la méthode PUT et renvoie un nouvel objet QCoapReply. Utilise data comme charge utile pour cette demande. Si data est vide, c'est le contenu de request qui sera utilisé.
Voir aussi get(), post(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::put(const QCoapRequest &request, QIODevice *device)
Envoie l'adresse request à l'aide de la méthode PUT et renvoie un nouvel objet QCoapReply. Utilise le contenu de device comme charge utile pour cette demande. Un appareil nul est traité comme un contenu vide, auquel cas le contenu de request sera utilisé.
Note : Le dispositif doit être ouvert et lisible avant d'appeler cette fonction.
Il s'agit d'une fonction surchargée.
Voir aussi get(), post(), deleteResource(), observe() et discover().
QCoapReply *QCoapClient::put(const QUrl &url, const QByteArray &data = QByteArray())
Envoie une requête PUT à url et renvoie un nouvel objet QCoapReply. Utilise data comme charge utile pour cette requête.
Il s'agit d'une fonction surchargée.
Voir aussi get(), post(), deleteResource(), observe() et discover().
[signal] void QCoapClient::responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender)
Ce signal est émis lorsqu'une réponse unicast à une requête multicast arrive. Le paramètre reply contient un pointeur sur la réponse qui vient d'être reçue, message contient la charge utile et les détails du message, et sender contient l'adresse de l'expéditeur.
Voir également error(), QCoapReply::finished() et QCoapReply::error().
void QCoapClient::setAckRandomFactor(double ackRandomFactor)
Fixe la valeur ACK_RANDOM_FACTOR définie dans la RFC 7252 - Section 4.2, à ackRandomFactor. Cette valeur doit être supérieure ou égale à 1. La valeur par défaut est 1.5.
Voir aussi setAckTimeout().
void QCoapClient::setAckTimeout(uint ackTimeout)
Fixe la valeur ACK_TIMEOUT définie dans la RFC 7252 - Section 4.2 à ackTimeout en millisecondes. La valeur par défaut est 2000 ms.
Ce délai ne s'applique qu'aux messages confirmables. Le délai réel pour les transmissions fiables est une valeur aléatoire comprise entre ACK_TIMEOUT et ACK_TIMEOUT * ACK_RANDOM_FACTOR.
Voir également setAckRandomFactor().
void QCoapClient::setBlockSize(quint16 blockSize)
Définit la taille maximale du bloc utilisé par le protocole à l'adresse blockSize lors de l'envoi de requêtes et de la réception de réponses. La taille du bloc doit être une puissance de deux.
void QCoapClient::setMaximumRetransmitCount(uint maximumRetransmitCount)
Définit la valeur MAX_RETRANSMIT définie dans RFC 7252 - Section 4.2 à maximumRetransmitCount. Cette valeur doit être inférieure ou égale à 25. La valeur par défaut est 4.
void QCoapClient::setMaximumServerResponseDelay(uint responseDelay)
Définit la valeur de MAX_SERVER_RESPONSE_DELAY à responseDelay en millisecondes. La valeur par défaut est de 250 secondes.
Comme défini dans la RFC 7390 - Section 2.5, MAX_SERVER_RESPONSE_DELAY est le délai de réponse maximal attendu sur tous les serveurs auxquels le client peut envoyer une demande de multidiffusion.
void QCoapClient::setMinimumTokenSize(int tokenSize)
Fixe la taille minimale du jeton à tokenSize en octets. Pour des raisons de sécurité, il est recommandé d'utiliser des jetons d'une longueur d'au moins 4 octets. La valeur par défaut de ce paramètre est de 4 octets.
void QCoapClient::setSecurityConfiguration(const QCoapSecurityConfiguration &configuration)
Définit les paramètres de configuration de la sécurité à partir de configuration. La configuration sera ignorée si le mode QtCoap::NoSecurity est utilisé.
Remarque : cette méthode doit être appelée avant le début de la poignée de main. Si vous devez modifier la configuration de sécurité après avoir établi une connexion sécurisée avec le serveur, le client doit d'abord être déconnecté.
Voir aussi disconnect().
void QCoapClient::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
Définit le socket QUdpSocket option à value.
© 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.