Sur cette page

QOpcUaGdsClient Class

Gère la communication avec le serveur GDS. En savoir plus...

En-tête : #include <QOpcUaGdsClient>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpcUa)
target_link_libraries(mytarget PRIVATE Qt6::OpcUa)
qmake : QT += opcua
Hérite de : QObject

Types publics

enum class Error { NoError, InvalidBackend, InvalidEndpoint, ConnectionError, DirectoryNodeNotFound, …, FailedToGetCertificate }
enum class State { Idle, BackendInstantiated, Connecting, Connected, RegisteringApplication, …, Error }

Fonctions publiques

QOpcUaGdsClient(QObject *parent = nullptr)
virtual ~QOpcUaGdsClient()
QString applicationId() const
const QOpcUaApplicationIdentity &applicationIdentity() const
const QOpcUaApplicationRecordDataType &applicationRecord() const
const QString &backend() const
int certificateCheckInterval() const
const QOpcUaX509DistinguishedName &distinguishedNameCertificateSigningRequestPreset() const
const QString &dnsCertificateSigningRequestPreset() const
const QOpcUaEndpointDescription &endpoint() const
QOpcUaGdsClient::Error error() const
const QOpcUaPkiConfiguration &pkiConfiguration() const
void setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
void setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
void setBackend(const QString &backend)
void setCertificateCheckInterval(int interval)
void setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)
void setEndpoint(const QOpcUaEndpointDescription &endpoint)
void setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)
void setTrustListUpdateInterval(int interval)
void start()
QOpcUaGdsClient::State state() const
int trustListUpdateInterval() const
void unregisterApplication()

Signaux

void applicationRegistered()
void authenticationRequired(QOpcUaAuthenticationInformation &authInfo)
void certificateGroupsReceived(QStringList certificateGroups)
void certificateUpdateRequired()
void certificateUpdated()
void errorChanged(QOpcUaGdsClient::Error error)
void stateChanged(QOpcUaGdsClient::State state)
void trustListUpdated()
void unregistered()

Description détaillée

Cette classe est actuellement disponible en avant-première technologique ; par conséquent, l'API et les fonctionnalités fournies par cette classe sont susceptibles d'être modifiées à tout moment sans préavis.

Cette classe gère toutes les étapes nécessaires à la communication avec un serveur GDS. Une fois dotée des informations relatives à l'application, elle procède à l'enregistrement auprès du serveur et à la gestion des clés et des certificats.

Seules quelques informations sont nécessaires pour participer à un réseau sécurisé.

L'enregistrement initial nécessite des privilèges d'administrateur, avec un nom d'utilisateur et un mot de passe pour l'authentification. Toutes les authentifications suivantes s'effectuent au niveau de l'application, à l'aide du certificat obtenu lors de la première connexion.

Si le processus se déroule correctement, vous devez attendre le signal « applicationRegistered ».

La plupart des structures de configuration doivent être identiques à celles utilisées pour la connexion ultérieure à QOpcUaClient et peuvent être partagées.

Configuration d’un client GDS :

QOpcUaGdsClient c;

// Si les identifiants sont nécessaires
QObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation&authInfo) {
        authInfo.setUsernameAuthentication("root", "secret");
 });

// Attendre la réussite
QObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {
    qDebug() << "Application" << c.applicationId() << "registered";
});

c.setBackend(...);
c.setEndpoint(...);
c.setApplicationIdentity(...);
c.setPkiConfiguration(...);
c.setApplicationRecord(...);
c.setCertificateSigningRequestPresets(...);
c.start();

Documentation sur les types de membres

enum class QOpcUaGdsClient::Error

Cette énumération sert à spécifier les erreurs pouvant survenir au cours du processus d'enregistrement.

ConstanteValeurDescription
QOpcUaGdsClient::Error::NoError0Tout va bien
QOpcUaGdsClient::Error::InvalidBackend1Impossible d’instancier le backend. La chaîne de caractères fournie ne correspond à aucun backend ou le chargement du plugin a échoué.
QOpcUaGdsClient::Error::InvalidEndpoint2Le point de terminaison fourni n'est pas valide.
QOpcUaGdsClient::Error::ConnectionError3La connexion au point de terminaison du serveur a échoué.
QOpcUaGdsClient::Error::DirectoryNodeNotFound4Le nœud de répertoire sur le serveur n'a pas pu être résolu
QOpcUaGdsClient::Error::FailedToRegisterApplication5L'enregistrement de l'application a échoué.
QOpcUaGdsClient::Error::FailedToUnregisterApplication6La désinscription de l'application a échoué.
QOpcUaGdsClient::Error::FailedToGetCertificateStatus7Impossible de récupérer l'état du certificat actuel.
QOpcUaGdsClient::Error::FailedToGetCertificate8Impossible de récupérer un certificat depuis le serveur.

enum class QOpcUaGdsClient::State

Cette énumération sert à préciser l'état actuel de l'enregistrement du client GDS.

ConstanteValeurDescription
QOpcUaGdsClient::State::Idle0Le client n’a pas encore été lancé.
QOpcUaGdsClient::State::BackendInstantiated1Le backend a été instancié
QOpcUaGdsClient::State::Connecting2Une connexion au serveur est en cours
QOpcUaGdsClient::State::Connected3La connexion au point de terminaison du serveur a abouti.
QOpcUaGdsClient::State::RegisteringApplication4L'application est en cours d'enregistrement auprès du serveur.
QOpcUaGdsClient::State::ApplicationRegistered5L'enregistrement de l'application auprès du serveur a abouti.
QOpcUaGdsClient::State::Error6Une erreur s'est produite. Consultez la valeur de retour de la fonction error() et la sortie du terminal pour plus de détails.

Documentation des fonctions membres

QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)

Crée un client GDS dont l'objet parent est parent.

[virtual noexcept] QOpcUaGdsClient::~QOpcUaGdsClient()

Supprime un client GDS.

QString QOpcUaGdsClient::applicationId() const

Renvoie l'identifiant de l'application attribué par le serveur.

Il s'agit d'un raccourci permettant d'obtenir l'identifiant de l'application à partir des données de l'enregistrement de l'application.

Voir également applicationRecord().

const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const

Renvoie l'applicationIdentity actuelle.

Voir également setApplicationIdentity().

const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const

Renvoie les données de l'enregistrement d'application utilisées par le client.

Voir également ` setApplicationRecord()`.

[signal] void QOpcUaGdsClient::applicationRegistered()

Ce signal est émis lorsqu'une application a été enregistrée avec succès.

[signal] void QOpcUaGdsClient::authenticationRequired(QOpcUaAuthenticationInformation &authInfo)

Ce signal est émis lorsque le client GDS tente de s'authentifier pour la première fois auprès d'un serveur nécessitant des privilèges d'administrateur.

authInfo Il doit être renseigné avec des informations d'authentification valides. Cet emplacement ne doit pas être utilisé au-delà des limites d'un thread.

const QString &QOpcUaGdsClient::backend() const

Renvoie la configuration actuelle du backend.

Si le backend a été modifié après le démarrage du client, cette fonction renvoie le paramètre modifié, mais pas l'instance réellement utilisée.

Voir aussi setBackend().

int QOpcUaGdsClient::certificateCheckInterval() const

Renvoie l'intervalle, en millisecondes, nécessaire à la vérification de la validité du certificat client.

Voir également setCertificateCheckInterval().

[signal] void QOpcUaGdsClient::certificateGroupsReceived(QStringList certificateGroups)

Ce signal est émis lorsque le client GDS reçoit une nouvelle liste d'certificateGroups s pour cette application.

[signal] void QOpcUaGdsClient::certificateUpdateRequired()

Ce signal est émis lorsque le client GDS détecte qu'une mise à jour du certificat actuellement utilisé est nécessaire.

Cela peut être dû au fait que le serveur demande au client de mettre à jour le certificat lorsque la date d'expiration de celui-ci est atteinte ou si le certificat est auto-signé.

La mise à jour du certificat est gérée automatiquement. Ce signal a uniquement pour but d’indiquer qu’une mise à jour va avoir lieu.

[signal] void QOpcUaGdsClient::certificateUpdated()

Ce signal est émis lorsque le client GDS a reçu un nouveau certificat qui était stocké sur le disque.

const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const

Renvoie le nom distinctif prédéfini pour les demandes de signature de certificat.

const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const

Renvoie le préréglage DNS pour les demandes de signature de certificats.

const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const

Renvoie la configuration actuelle du point de terminaison.

Si le point de terminaison a été modifié après le démarrage du client, cette fonction renvoie le paramètre modifié, mais pas le point de terminaison réellement utilisé.

Voir également setEndpoint().

QOpcUaGdsClient::Error QOpcUaGdsClient::error() const

Renvoie l'état d'erreur actuel.

[signal] void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)

Ce signal est émis lorsqu'une « error » s'est produite.

const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const

Renvoie la configuration PKI actuelle.

Voir également setPkiConfiguration().

void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)

Définit l'identifiant de l'application appIdentity qui sera utilisé par le client.

Cette identité sert à l'enregistrement auprès du serveur GDS. Cette fonction doit être appelée avant le démarrage du client GDS. Modifier ce paramètre par la suite n'a aucun effet.

Voir également applicationIdentity().

void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)

Définit l'appRecord des données d'enregistrement de l'application que le client doit utiliser.

Ces données servent à l'enregistrement auprès du serveur GDS. Cette fonction doit être appelée avant le démarrage du client GDS.

La plupart des données sont identiques à celles de l'identité de l'application. Une fois l'enregistrement effectué, l'identifiant d'application attribué peut être récupéré.

Voir également applicationRecord() et setApplicationIdentity.

void QOpcUaGdsClient::setBackend(const QString &backend)

Définit le backend que le client doit utiliser pour communiquer avec le serveur à l'adresse backend.

Cette fonction doit être appelée avant le démarrage du client GDS. Modifier ce paramètre par la suite n'aura aucun effet.

Voir également backend(), QOpcUaProvider::availableBackends() et start().

void QOpcUaGdsClient::setCertificateCheckInterval(int interval)

Définit l'intervalle, en millisecondes, de vérification de la validité du certificat client sur interval.

Voir également certificateCheckInterval().

void QOpcUaGdsClient::setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)

Définit les paramètres par défaut pour les demandes de signature de certificat : le nom distinctif dn et la chaîne DNS dns.

Lors de la création d’une demande de signature de certificat, certaines informations supplémentaires sont nécessaires, qui ne sont pas fournies par l’identité de l’application.

Cette fonction doit être appelée avant de démarrer le client GDS.

Voir également setApplicationIdentity().

void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)

Définit le point de terminaison que le client doit utiliser pour communiquer avec le serveur : endpoint.

Cette fonction doit être appelée avant le démarrage du client GDS. Modifier ce paramètre par la suite n'aura aucun effet.

La communication avec un serveur GDS n'est possible que via un point de terminaison chiffré. L'utilisation d'un point de terminaison non chiffré échouera.

Voir également endpoint().

void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)

Définit l'pkiConfig de configuration PKI que le client doit utiliser.

Tous les certificats, clés et listes de confiance seront utilisés à partir des emplacements indiqués ou y seront stockés. Pour utiliser le certificat reçu du GDS, la même configuration doit être utilisée avec QOpcUaClient.

Cette fonction doit être appelée avant le démarrage du client GDS. Modifier ce paramètre par la suite n’aura aucun effet.

Voir également pkiConfiguration().

void QOpcUaGdsClient::setTrustListUpdateInterval(int interval)

Définit l'intervalle, en millisecondes, de mise à jour de la liste de confiance depuis le serveur vers interval.

Voir également trustListUpdateInterval().

void QOpcUaGdsClient::start()

Lance le processus client.

Une fois toutes les informations configurées, le client peut être lancé.

QOpcUaGdsClient::State QOpcUaGdsClient::state() const

Renvoie l'état actuel du client.

[signal] void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)

Ce signal est émis lorsque l'état interne du client change. L'state e indique le nouvel état.

int QOpcUaGdsClient::trustListUpdateInterval() const

Renvoie l'intervalle, en millisecondes, de mise à jour de la liste de confiance par le serveur.

Voir également setTrustListUpdateInterval().

[signal] void QOpcUaGdsClient::trustListUpdated()

Ce signal est émis lorsque le client GDS a reçu une nouvelle liste de confiance du serveur et l'a enregistrée sur le disque.

void QOpcUaGdsClient::unregisterApplication()

Supprime l'enregistrement d'une application sur le serveur.

Cette fonction peut être utilisée lorsqu'une application doit être supprimée définitivement du réseau. Il n'est pas nécessaire de l'appeler lors du redémarrage ou de l'arrêt du système.

[signal] void QOpcUaGdsClient::unregistered()

Ce signal est émis lorsque le client GDS a désenregistré l'application.

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