QOpcUaGdsClient 类
处理与 GDS 服务器的通信。 更多信息...
头文件 | #include <QOpcUaGdsClient> |
CMake | find_package(Qt6 REQUIRED COMPONENTS OpcUa) target_link_libraries(mytarget PRIVATE Qt6::OpcUa) |
qmake | QT += opcua |
继承 | QObject |
公共类型
枚举 | Error { NoError, InvalidBackend, InvalidEndpoint, ConnectionError, DirectoryNodeNotFound, …, FailedToGetCertificate } |
枚举 | State { Idle, BackendInstantiated, Connecting, Connected, RegisteringApplication, …, Error } |
公共函数
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 | 注销应用程序() |
信号
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() |
详细说明
此类目前作为技术预览版提供,因此该类提供的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::NoError | 0 | 一切正常 |
QOpcUaGdsClient::Error::InvalidBackend | 1 | 后端无法实例化。提供的后端字符串与任何后端都不匹配或加载插件失败。 |
QOpcUaGdsClient::Error::InvalidEndpoint | 2 | 提供的端点无效。 |
QOpcUaGdsClient::Error::ConnectionError | 3 | 连接到服务器端点失败。 |
QOpcUaGdsClient::Error::DirectoryNodeNotFound | 4 | 服务器上的目录节点无法解析。 |
QOpcUaGdsClient::Error::FailedToRegisterApplication | 5 | 应用程序注册失败。 |
QOpcUaGdsClient::Error::FailedToUnregisterApplication | 6 | 应用程序取消注册失败。 |
QOpcUaGdsClient::Error::FailedToGetCertificateStatus | 7 | 无法检索当前证书的状态。 |
QOpcUaGdsClient::Error::FailedToGetCertificate | 8 | 无法从服务器检索证书。 |
枚举类 QOpcUaGdsClient::State
此枚举用于指定GDS客户端注册的当前状态。
常量 | 值 | 描述 |
---|---|---|
QOpcUaGdsClient::State::Idle | 0 | 客户端尚未启动。 |
QOpcUaGdsClient::State::BackendInstantiated | 1 | 后端已实例化 |
QOpcUaGdsClient::State::Connecting | 2 | 正在连接到服务器。 |
QOpcUaGdsClient::State::Connected | 3 | 已成功连接到服务器端点。 |
QOpcUaGdsClient::State::RegisteringApplication | 4 | 正在将应用程序注册到服务器。 |
QOpcUaGdsClient::State::ApplicationRegistered | 5 | 已成功将应用程序注册到服务器。 |
QOpcUaGdsClient::State::Error | 6 | 发生了一个错误。请参阅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(毫秒)。
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(毫秒)。
void QOpcUaGdsClient::start()
启动客户端进程。
在设置所有信息后,可以启动客户端。
- setBackend
- setEndpoint
- setApplicationIdentity
- setPkiConfiguration
- setApplicationRecord
- setCertificateSigingRequestPresets
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公司及其它在世界各地的商号。所有其他商标均为其各自所有者的财产。