QOpcUaGdsClient Class
GDS 서버와의 통신을 처리합니다. 더 보기...
헤더: | #include <QOpcUaGdsClient> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS OpcUa) target_link_libraries(mytarget PRIVATE Qt6::OpcUa) |
qmake: | QT += opcua |
상속합니다: | QObject |
공개 유형
enum class | Error { NoError, InvalidBackend, InvalidEndpoint, ConnectionError, DirectoryNodeNotFound, …, FailedToGetCertificate } |
enum class | 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 | unregisterApplication() |
신호
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;// 자격 증명이 필요한 경우QObject::connect(&c, &QOpcUaGdsClient::인증필요, [&](QOpcUaAuthenticationInformation &authInfo) { authInfo.setUsernameAuthentication("root", "secret"); });// 성공 대기 중QObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {} qDebug() << "Application" << c.applicationId() << "registered"; }); c.setBackend(...); c.setEndpoint(...); c.setApplicationIdentity(...); c.setPkiConfiguration(...); c.setApplicationRecord(...); c.setCertificateSigningRequestPresets(...); c.start();
멤버 유형 문서
enum class QOpcUaGdsClient::Error
이 열거형은 등록 프로세스 중에 발생할 수 있는 오류를 지정하는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
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 | 서버에서 인증서를 검색할 수 없습니다. |
enum class QOpcUaGdsClient::State
이 열거형은 GDS 클라이언트 등록의 현재 상태를 지정하는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
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를 반환합니다.
Is는 애플리케이션 레코드 데이터에서 애플리케이션 ID를 받는 바로 가기입니다.
applicationRecord()도 참조하세요 .
const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const
현재 애플리케이션아이덴티티를 반환합니다.
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 클라이언트가 이 애플리케이션에 대한 새 목록( certificateGroups )을 수신할 때 전송됩니다.
[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
현재 오류 상태를 반환합니다.
[signal]
void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)
이 신호는 error 발생 시 전송됩니다.
const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const
현재 pkiConfiguration을 반환합니다.
setPkiConfiguration()도 참조하십시오 .
void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
클라이언트에서 사용할 애플리케이션 ID appIdentity 를 설정합니다.
이 ID는 GDS 서버에 등록하는 데 사용됩니다. 이 함수는 GDS 클라이언트를 시작하기 전에 호출해야 합니다. 이후에 이 설정을 변경하면 효과가 없습니다.
applicationIdentity()도 참조하세요 .
void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
클라이언트에서 사용할 애플리케이션 레코드 데이터 appRecord 를 설정합니다.
이 데이터는 GDS 서버에 등록하는 데 사용됩니다. 이 함수는 GDS 클라이언트를 시작하기 전에 호출해야 합니다.
대부분의 데이터는 애플리케이션 ID와 동일합니다. 등록 후 할당된 애플리케이션 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 을 설정합니다.
인증서 서명 요청을 만들 때 애플리케이션 ID에서 제공하지 않는 몇 가지 추가 정보가 필요합니다.
이 함수는 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()
클라이언트 프로세스를 시작합니다.
모든 정보를 설정한 후 클라이언트를 시작할 수 있습니다.
- setBackend
- setEndpoing
- setApplicationIdentity
- setPkiConfiguration
- setApplicationRecord
- 인증서 서명 요청 사전 설정 설정
QOpcUaGdsClient::State QOpcUaGdsClient::state() const
현재 클라이언트 상태를 반환합니다.
[signal]
void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)
이 신호는 클라이언트의 내부 상태가 변경될 때 발생합니다. state 은 새 상태를 나타냅니다.
int QOpcUaGdsClient::trustListUpdateInterval() const
서버에서 신뢰 목록을 업데이트하는 간격(밀리초)을 반환합니다.
setTrustListUpdateInterval()도 참조하세요 .
[signal]
void QOpcUaGdsClient::trustListUpdated()
이 신호는 GDS 클라이언트가 서버로부터 새 신뢰 목록을 수신하여 디스크에 저장할 때 발생합니다.
void QOpcUaGdsClient::unregisterApplication()
서버에서 애플리케이션의 등록을 취소합니다.
이 기능은 애플리케이션을 네트워크에서 영구적으로 제거해야 할 때 사용할 수 있습니다. 재부팅하거나 종료할 때는 호출할 필요가 없습니다.
[signal]
void QOpcUaGdsClient::unregistered()
이 신호는 GDS 클라이언트가 애플리케이션 등록을 취소했을 때 발생합니다.
© 2025 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.