이 페이지에서

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()

상세 설명

이 클래스는 현재 테크놀로지 프리뷰(Technology Preview)로 제공되고 있으므로, 이 클래스가 제공하는 API 및 기능은 사전 공지 없이 언제든지 변경될 수 있습니다.

이 클래스는 GDS 서버와의 통신에 필요한 모든 단계를 처리합니다. 애플리케이션에 대한 정보가 제공되면, 서버에 등록하고 키/인증서를 관리합니다.

보안 네트워크에 참여하기 위해서는 몇 가지 세부 사항만 파악하면 됩니다.

첫 등록 시에는 인증을 위해 사용자 이름과 비밀번호를 사용하는 관리자 권한이 필요합니다. 그 이후의 모든 인증은 처음 수신한 인증서를 사용하여 애플리케이션 기반으로 이루어집니다.

전체 프로세스가 성공적으로 완료되기를 기다리려면 applicationRegistered 신호가 나타날 때까지 기다려야 합니다.

대부분의 설정 구조체는 이후 QOpcUaClient 와의 연결 시와 동일해야 하며, 이를 공유할 수 있습니다.

GDS 클라이언트 설정:

QOpcUaGdsClient c;

// 자격 증명이 필요한 경우
QObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](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

이 열거형은 등록 과정에서 발생할 수 있는 오류를 지정하는 데 사용됩니다.

상수값설명
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서버에서 인증서를 가져올 수 없습니다.

enum class 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 클라이언트가 해당 애플리케이션에 대한 새로운 ‘ 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를 조회할 수 있습니다.

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)

인증서 서명 요청에 대한 사전 설정인 식별명(Distinguished Name) 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()

클라이언트 프로세스를 시작합니다.

모든 정보를 설정한 후 클라이언트를 시작할 수 있습니다.

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 클라이언트가 해당 애플리케이션의 등록을 해제했을 때 발생합니다.

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