QOpcUaGdsClient 类

处理与 GDS 服务器的通信。 更多信息...

头文件 #include <QOpcUaGdsClient>
CMakefind_package(Qt6 REQUIRED COMPONENTS OpcUa)
target_link_libraries(mytarget PRIVATE Qt6::OpcUa)
qmakeQT += opcua
继承 QObject

公共类型

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

公共函数

QOpcUaGdsClient(QObject *parent = nullptr)
virtual~QOpcUaGdsClient()
QStringapplicationId() const
const QOpcUaApplicationIdentity &applicationIdentity() const
const QOpcUaApplicationRecordDataType &applicationRecord() const
const QString &backend() const
intcertificateCheckInterval() const
const QOpcUaX509DistinguishedName &distinguishedNameCertificateSigningRequestPreset() const
const QString &dnsCertificateSigningRequestPreset() const
const QOpcUaEndpointDescription &endpoint() const
QOpcUaGdsClient::Errorerror() const
const QOpcUaPkiConfiguration &pkiConfiguration() const
voidsetApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
voidsetApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
voidsetBackend(const QString &backend)
voidsetCertificateCheckInterval(int interval)
voidsetCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)
voidsetEndpoint(const QOpcUaEndpointDescription &endpoint)
voidsetPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)
voidsetTrustListUpdateInterval(int interval)
voidstart()
QOpcUaGdsClient::Statestate() const
inttrustListUpdateInterval() const
void注销应用程序()

信号

voidapplicationRegistered()
voidauthenticationRequired(QOpcUaAuthenticationInformation &authInfo)
voidcertificateGroupsReceived(QStringList certificateGroups)
voidcertificateUpdateRequired()
voidcertificateUpdated()
voiderrorChanged(QOpcUaGdsClient::Error error)
voidstateChanged(QOpcUaGdsClient::State state)
voidtrustListUpdated()
voidunregistered()

详细说明

此类目前作为技术预览版提供,因此该类提供的API和功能可能会在任何时候更改,恕不另行通知。

此类处理与GDS服务器通信所需的全部步骤。提供有关应用程序的信息,即可在服务器上注册并管理密钥/证书。

为了参与安全的网络,只需要了解一些细节。

首次注册需要使用用户名和密码进行身份验证,并需要管理员权限。所有进一步的认证都基于应用程序,使用收到的第一个证书。

期望整个过程成功完成,您需要等待applicationRegistered信号。

大多数设置结构必须与QOpcUaClient的连接相同,并可以共享。

设置GDS客户端

QOpcUaGdsClient c;

// In case the credentials are needed
QObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation &authInfo) {
        authInfo.setUsernameAuthentication("root", "secret");
 });

// Await success
QObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {
    qDebug() << "Application" << c.applicationId() << "registered";
});

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

成员类型文档

枚举类 QOpcUaGdsClient::Error

此枚举用于指定在注册过程中可能发生的错误。

常量描述
QOpcUaGdsClient::Error::NoError0一切正常
QOpcUaGdsClient::Error::InvalidBackend1后端无法实例化。提供的后端字符串与任何后端都不匹配或加载插件失败。
QOpcUaGdsClient::Error::InvalidEndpoint2提供的端点无效。
QOpcUaGdsClient::Error::ConnectionError3连接到服务器端点失败。
QOpcUaGdsClient::Error::DirectoryNodeNotFound4服务器上的目录节点无法解析。
QOpcUaGdsClient::Error::FailedToRegisterApplication5应用程序注册失败。
QOpcUaGdsClient::Error::FailedToUnregisterApplication6应用程序取消注册失败。
QOpcUaGdsClient::Error::FailedToGetCertificateStatus7无法检索当前证书的状态。
QOpcUaGdsClient::Error::FailedToGetCertificate8无法从服务器检索证书。

枚举类 QOpcUaGdsClient::State

此枚举用于指定GDS客户端注册的当前状态。

常量描述
QOpcUaGdsClient::State::Idle0客户端尚未启动。
QOpcUaGdsClient::State::BackendInstantiated1后端已实例化
QOpcUaGdsClient::State::Connecting2正在连接到服务器。
QOpcUaGdsClient::State::Connected3已成功连接到服务器端点。
QOpcUaGdsClient::State::RegisteringApplication4正在将应用程序注册到服务器。
QOpcUaGdsClient::State::ApplicationRegistered5已成功将应用程序注册到服务器。
QOpcUaGdsClient::State::Error6发生了一个错误。请参阅error()的返回值以及终端输出以获取更多详细信息。

成员函数文档

QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)

使用parent作为父对象构造GDS客户端。

[virtual noexcept] QOpcUaGdsClient::~QOpcUaGdsClient()

销毁一个GDS客户端。

QString QOpcUaGdsClient::applicationId() const

返回由服务器分配的应用程序ID。

这是一个从应用程序记录数据中接收应用程序ID的快捷方式。

另请参阅 applicationRecord

const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const

返回当前的applicationIdentity。

另请参阅 setApplicationIdentity

const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const

返回客户端使用的应用程序记录数据。

另请参阅 setApplicationRecord

[signal] void QOpcUaGdsClient::applicationRegistered()

当应用程序成功注册时,发出此信号。

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

当GDS客户端尝试与一个需要管理权限的服务器进行首次身份验证时,发出此信号。

authInfo 必须填写有效的身份验证信息。此槽不允许跨越线程边界使用。

const QString &QOpcUaGdsClient::backend() const

返回当前的后端设置。

如果客户端启动后已更改后端,则它将返回更改后的设置,但不是实际使用的实例。

另请参阅 setBackend

int QOpcUaGdsClient::certificateCheckInterval() const

返回检查客户端证书有效性的间隔(以毫秒为单位)。

另请参阅 setCertificateCheckInterval

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

当GDS客户端接收到应用于此应用程序的新的证书组列表时,发出此信号。

[signal] void QOpcUaGdsClient::certificateUpdateRequired()

当GDS客户端检测到需要更新当前使用的证书时,发出此信号。

这可能是由于服务器请求客户端更新当证书到期或证书是自签名的。

证书更新将自动处理。此信号仅用于通知更新将要发生。

[signal] void QOpcUaGdsClient::certificateUpdated()

当 GDS 客户端接收到存储在磁盘上的新证书时,会发出此信号。

const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const

返回证书签名请求的区分名称预设置。

const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const

返回证书签名请求的 DNS 预设置。

const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const

返回当前端点设置。

如果客户端启动后更改了端点,它将返回更改后的设置,但不是实际使用的端点。

另请参阅setEndpoint()。

QOpcUaGdsClient::Error QOpcUaGdsClient::error() const

返回当前错误状态。

[信号] void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)

当发生错误时,会发出此信号。

const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const

返回当前 pkiConfiguration。

另请参阅setPkiConfiguration()。

void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)

设置客户端要使用的应用程序身份 appIdentity

此身份用于向 GDS 服务器注册。必须在启动 GDS 客户端之前调用此函数。更改此设置后不会产生效果。

另请参阅applicationIdentity()。

void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)

设置客户端要使用的应用程序记录数据 appRecord

此数据用于向 GDS 服务器注册。必须在启动 GDS 客户端之前调用此函数。

大部分数据与应用程序身份相同。注册后可以检索分配的应用程序 ID。

另请参阅applicationRecord() 和 setApplicationIdentity()。

void QOpcUaGdsClient::setBackend(const QString &backend)

将客户端与服务器通信时使用的后端设置为 backend

必须在启动 GDS 客户端之前调用此函数。更改此设置后不会产生效果。

另请参阅backend(),QOpcUaProvider::availableBackends() 和 start()。

void QOpcUaGdsClient::setCertificateCheckInterval(int interval)

将客户端证书有效性的检查间隔设置为interval(毫秒)。

另请参阅certificateCheckInterval

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

设置证书签名请求的预设值;指名名称dn和DNS字符串dns

在创建证书签名请求时,需要一些额外的信息,这些信息不是由应用程序标识符提供的。

必须在启动GDS客户端之前调用此函数。

另请参阅 setApplicationIdentity

void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)

将客户端用于与服务器通信的端点设置为endpoint

必须在启动 GDS 客户端之前调用此函数。更改此设置后不会产生效果。

通过加密端点才能与GDS服务器进行通信。使用未加密的端点将失败。

另请参阅endpoint

void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)

设置客户端使用的PKI配置pkiConfig

所有证书、密钥和信任列表将从或存储到给定位置。为了使用从GDS收到的证书,必须与QOpcUaClient使用相同的配置。

必须在启动 GDS 客户端之前调用此函数。更改此设置后不会产生效果。

另请参阅pkiConfiguration

void QOpcUaGdsClient::setTrustListUpdateInterval(int interval)

将服务器更新信任列表的间隔设置为interval(毫秒)。

另请参阅trustListUpdateInterval

void QOpcUaGdsClient::start()

启动客户端进程。

在设置所有信息后,可以启动客户端。

QOpcUaGdsClient::State QOpcUaGdsClient::state() const

返回客户端当前状态。

[信号] void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)

当客户端的内部状态发生变化时,将发射此信号。新的状态由state指示。

int QOpcUaGdsClient::trustListUpdateInterval() const

返回从服务器更新信任列表的间隔(毫秒)。

另请参阅setTrustListUpdateInterval

[信号] void QOpcUaGdsClient::trustListUpdated()

当GDS客户端从服务器接收到新的信任列表并将其存储到磁盘时,将发射此信号。

void QOpcUaGdsClient::unregisterApplication()

从服务器中注销一个应用程序。

当应用程序需要永久从网络中删除时,可以使用此函数。在重启或关闭时不需要调用。

[signal] void QOpcUaGdsClient::unregistered()

当GDS客户端注销应用程序时,将发出此信号。

© 2024 Qt公司。此处包含的文档贡献物的版权归其各自所有者所有。此处提供的文档根据免费软件基金会发布的GNU自由文档许可证版本1.3的条款提供许可。Qt及其相关标志是芬兰的Qt公司及其它在世界各地的商号。所有其他商标均为其各自所有者的财产。