QOpcUaGdsClient Class
Maneja la comunicación con el Servidor GDS. Más...
| Cabecera: | #include <QOpcUaGdsClient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpcUa)target_link_libraries(mytarget PRIVATE Qt6::OpcUa) |
| qmake: | QT += opcua |
| Hereda: | QObject |
Tipos públicos
| enum class | Error { NoError, InvalidBackend, InvalidEndpoint, ConnectionError, DirectoryNodeNotFound, …, FailedToGetCertificate } |
| enum class | State { Idle, BackendInstantiated, Connecting, Connected, RegisteringApplication, …, Error } |
Funciones públicas
| 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() |
Señales
| 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() |
Descripción detallada
Esta clase está actualmente disponible como Muestra de Tecnología, y por lo tanto la API y la funcionalidad proporcionada por la clase puede estar sujeta a cambios en cualquier momento sin previo aviso.
Esta clase maneja todos los pasos necesarios para la comunicación con un servidor GDS. Provisto de información sobre la aplicación realiza el registro con el servidor y la gestión de claves/certificados.
Sólo es necesario conocer unos pocos detalles para participar en una red segura.
El primer registro requiere privilegios administrativos mediante un nombre de usuario y una contraseña para la autenticación. Todas las autenticaciones posteriores se basan en la aplicación, utilizando el certificado que se recibió en primer lugar.
A la espera de que todo el proceso tenga éxito, hay que esperar la señal applicationRegistered.
La mayoría de los structs de configuración tienen que ser los mismos que para la conexión con QOpcUaClient después y pueden ser compartidos.
Configuración de un cliente GDS:
QOpcUaGdsClient c;// En caso de que se necesiten las credencialesQObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation &authInfo) { authInfo.setUsernameAuthentication("root", "secret"); });// Esperar éxitoQObject::connect(&c, &QOpcUaGdsClient::aplicaciónRegistrada, [&]() { qDebug() << "Application" << c.applicationId() << "registered"; }); c.setBackend(...); c.setEndpoint(...); c.setApplicationIdentity(...); c.setPkiConfiguration(...); c.setApplicationRecord(...); c.setCertificateSigningRequestPresets(...); c.start();
Documentación de tipos de miembros
enum class QOpcUaGdsClient::Error
Este enum se utiliza para especificar los errores que pueden producirse durante el proceso de registro.
| Constante | Valor | Descripción |
|---|---|---|
QOpcUaGdsClient::Error::NoError | 0 | Todo va bien |
QOpcUaGdsClient::Error::InvalidBackend | 1 | No se pudo instanciar el backend. La cadena de backend dada, no coincide con ningún backend o la carga del plugin falló. |
QOpcUaGdsClient::Error::InvalidEndpoint | 2 | El endpoint dado no es válido. |
QOpcUaGdsClient::Error::ConnectionError | 3 | Ha fallado la conexión con el endpoint del servidor. |
QOpcUaGdsClient::Error::DirectoryNodeNotFound | 4 | No se pudo resolver el nodo de directorio en el servidor. |
QOpcUaGdsClient::Error::FailedToRegisterApplication | 5 | El registro de la aplicación no se ha realizado correctamente. |
QOpcUaGdsClient::Error::FailedToUnregisterApplication | 6 | No se ha podido anular el registro de la aplicación. |
QOpcUaGdsClient::Error::FailedToGetCertificateStatus | 7 | No se ha podido recuperar el estado del certificado actual. |
QOpcUaGdsClient::Error::FailedToGetCertificate | 8 | No se ha podido recuperar un certificado del servidor. |
enum class QOpcUaGdsClient::State
Este enum se utiliza para especificar el estado actual del registro del cliente GDS.
| Constante | Valor | Descripción |
|---|---|---|
QOpcUaGdsClient::State::Idle | 0 | El cliente aún no se ha iniciado. |
QOpcUaGdsClient::State::BackendInstantiated | 1 | Se ha instanciado el backend |
QOpcUaGdsClient::State::Connecting | 2 | Se está realizando una conexión con el servidor |
QOpcUaGdsClient::State::Connected | 3 | La conexión con el endpoint del servidor se ha realizado correctamente. |
QOpcUaGdsClient::State::RegisteringApplication | 4 | Se está registrando la aplicación con el servidor. |
QOpcUaGdsClient::State::ApplicationRegistered | 5 | El registro de la aplicación en el servidor se ha realizado correctamente. |
QOpcUaGdsClient::State::Error | 6 | Se ha producido un error. Consulte el valor de retorno de error() y la salida del terminal para obtener más detalles. |
Documentación de las funciones miembro
QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)
Construye un cliente GDS con parent como objeto padre.
[virtual noexcept] QOpcUaGdsClient::~QOpcUaGdsClient()
Destruye un cliente GDS.
QString QOpcUaGdsClient::applicationId() const
Devuelve el id de aplicación asignado por el servidor.
Es un atajo para recibir el id de la aplicación desde los datos del registro de la aplicación.
Véase también applicationRecord().
const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const
Devuelve la applicationIdentity actual.
Véase también setApplicationIdentity().
const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const
Devuelve los datos de registro de la aplicación que utiliza el cliente.
Véase también setApplicationRecord().
[signal] void QOpcUaGdsClient::applicationRegistered()
Esta señal se emite cuando una aplicación se ha registrado correctamente.
[signal] void QOpcUaGdsClient::authenticationRequired(QOpcUaAuthenticationInformation &authInfo)
Esta señal se emite cuando el cliente GDS intenta realizar una autenticación por primera vez con un servidor, que requiere privilegios administrativos.
authInfo tiene que ser rellenado con información válida de autenticación. Esta ranura no debe utilizarse cruzando límites de hilos.
const QString &QOpcUaGdsClient::backend() const
Devuelve la configuración actual del backend.
Si el backend fue cambiado después de iniciar el cliente, devolverá la configuración cambiada, pero no la instancia realmente utilizada.
Véase también setBackend().
int QOpcUaGdsClient::certificateCheckInterval() const
Devuelve el intervalo en milisegundos para comprobar la validez del certificado del cliente.
Véase también setCertificateCheckInterval().
[signal] void QOpcUaGdsClient::certificateGroupsReceived(QStringList certificateGroups)
Esta señal se emite cuando el cliente GDS recibe una nueva lista de certificateGroups para esta aplicación.
[signal] void QOpcUaGdsClient::certificateUpdateRequired()
Esta señal se emite cuando el cliente GDS detecta que es necesaria una actualización del certificado utilizado actualmente.
Esto puede ser causado por el servidor, solicitando al cliente que actualice el certificado, cuando se cumple la fecha de vencimiento del certificado o si el certificado es autofirmado.
La actualización del certificado se gestiona automáticamente. Esta señal sólo sirve para informar de que se va a producir una actualización.
[signal] void QOpcUaGdsClient::certificateUpdated()
Esta señal se emite cuando el cliente GDS ha recibido un nuevo certificado almacenado en disco.
const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const
Devuelve el nombre distinguido preestablecido para las solicitudes de firma de certificados.
const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const
Devuelve el DNS preestablecido para las solicitudes de firma de certificados.
const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const
Devuelve la configuración actual del punto final.
Si el punto final se cambió después de iniciar el cliente, devolverá la configuración cambiada, pero no el punto final utilizado realmente.
Véase también setEndpoint().
QOpcUaGdsClient::Error QOpcUaGdsClient::error() const
Devuelve el estado de error actual.
[signal] void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)
Esta señal se emite cuando se produce un error.
const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const
Devuelve la pkiConfiguración actual.
Véase también setPkiConfiguration().
void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
Establece la identidad de la aplicación appIdentity que utilizará el cliente.
Esta identidad se utiliza para registrarse en el servidor GDS. Esta función debe llamarse antes de iniciar el cliente GDS. El cambio posterior de esta configuración no tiene ningún efecto.
Véase también applicationIdentity().
void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
Establece los datos de registro de la aplicación appRecord que utilizará el cliente.
Estos datos se utilizan para registrarse en el servidor GDS. Esta función debe llamarse antes de iniciar el cliente GDS.
La mayoría de los datos son los mismos que en la identidad de la aplicación. Tras el registro, se puede recuperar el identificador de aplicación asignado.
Véase también applicationRecord() y setApplicationIdentity.
void QOpcUaGdsClient::setBackend(const QString &backend)
Establece el backend que utilizará el cliente para comunicarse con el servidor en backend.
Esta función debe invocarse antes de iniciar el cliente GDS. Cambiar esta configuración después no tiene ningún efecto.
Véase también backend(), QOpcUaProvider::availableBackends(), y start().
void QOpcUaGdsClient::setCertificateCheckInterval(int interval)
Establece el intervalo en milisegundos para comprobar la validez del certificado del cliente en interval.
Véase también certificateCheckInterval().
void QOpcUaGdsClient::setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)
Establece los valores predefinidos para las solicitudes de firma de certificado; el nombre distinguido dn y la cadena DNS dns.
Al crear una solicitud de firma de certificado se necesita información adicional que no proporciona la identidad de la aplicación.
Esta función debe invocarse antes de iniciar el cliente GDS.
Véase también setApplicationIdentity().
void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)
Establece en endpoint el punto final que utilizará el cliente para comunicarse con el servidor.
Esta función debe invocarse antes de iniciar el cliente GDS. Cambiar esta configuración posteriormente no tiene ningún efecto.
La comunicación con un servidor GDS sólo es posible a través de un endpoint cifrado. El uso de un endpoint no encriptado fallará.
Véase también endpoint().
void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)
Establece la configuración de PKI pkiConfig que utilizará el cliente.
Todos los certificados, claves y listas de confianza se utilizarán o almacenarán en las ubicaciones indicadas. Para utilizar el certificado recibido del GDS, debe utilizarse la misma configuración con QOpcUaClient.
Esta función debe ejecutarse antes de iniciar el cliente GDS. Cambiar esta configuración posteriormente no tiene ningún efecto.
Véase también pkiConfiguration().
void QOpcUaGdsClient::setTrustListUpdateInterval(int interval)
Establece el intervalo en milisegundos para actualizar la lista de confianza desde el servidor a interval.
Véase también trustListUpdateInterval().
void QOpcUaGdsClient::start()
Inicia el proceso del cliente.
Después de configurar toda la información, se puede iniciar el cliente.
- setBackend
- setEndpoing
- setApplicationIdentity
- setPkiConfiguration
- setApplicationRecord
- setCertificateSigingRequestPresets
QOpcUaGdsClient::State QOpcUaGdsClient::state() const
Devuelve el estado actual del cliente.
[signal] void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)
Esta señal se emite cuando cambia el estado interno del cliente. La dirección state indica el nuevo estado.
int QOpcUaGdsClient::trustListUpdateInterval() const
Devuelve el intervalo en milisegundos para actualizar la lista de confianza desde el servidor.
Véase también setTrustListUpdateInterval().
[signal] void QOpcUaGdsClient::trustListUpdated()
Esta señal se emite cuando el cliente GDS ha recibido una nueva lista de confianza del servidor y la ha almacenado en el disco.
void QOpcUaGdsClient::unregisterApplication()
Da de baja una aplicación del servidor.
Esta función se puede utilizar cuando una aplicación tiene que ser eliminada permanentemente de la red. No es necesario llamarla al reiniciar o apagar.
[signal] void QOpcUaGdsClient::unregistered()
Esta señal se emite cuando el cliente GDS ha dado de baja la aplicación.
© 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.