이 페이지에서

Qt Remote Objects 노드

QtRO 네트워크에서는 QRemoteObjectNodes("노드")를 통해 프로세스 간에 정보가 전달됩니다. 이 피어 투 피어(P2P) 기능은 노드 간에 필요한 데이터를 전달하는 소수의 고유한 패킷을 사용합니다.

네트워크에 참여하는 각 프로세스는 QRemoteObjectNode, QRemoteObjectHost 또는 QRemoteObjectRegistryHost 와 같은 노드 기반 유형을 인스턴스화합니다. 노드의 호스트 유형은 추가 기능을 제공합니다. QRemoteObjectHost 와 QRemoteObjectRegistryHost 모두 enableRemoting() 및 해당 disableRemoting() 메서드를 지원하며, 이는 소스 객체를 네트워크에 노출하는 핵심 메서드입니다. 레지스트리 기능을 사용하려면 네트워크에 QRemoteObjectRegistryHost 가 있어야 합니다. 그러면 다른 모든 노드는 RegistryHost의 URL을 Node의 registryAddress 생성자 매개변수에 전달하거나, 해당 URL을 setRegistryUrl() 메서드에 전달할 수 있습니다.

QtRO는 피어 투 피어(peer-to-peer) 네트워크이므로, 유효한 리플리카(Replica)를 ` acquire()`하려면 해당 리플리카의 노드가 소스(Source)를 호스팅하는 노드에 연결되어 있어야 합니다. 호스트 노드란 다른 노드가 자신과 연결할 수 있도록 허용하는 노드를 말하며, 이는 호스트에 고유한 주소를 부여함으로써 구현됩니다. 이 주소는 QRemoteObjectHost 생성자에 전달되거나 setHostUrl 메서드를 통해 설정됩니다. 레플리카를 요청하는 노드는 레플리카를 초기화하고 최신 상태로 유지하기 위해 호스트 노드와의 연결을 설정해야 합니다.

QtRO URL을 사용한 노드 연결

호스트 노드는 연결을 간소화하기 위해 사용자 정의 URL을 사용합니다. 현재 QtRO는 다음 두 가지 유형의 연결을 지원합니다:

  1. 표준 TCP/IP 프로토콜을 사용하는 TCP 연결 — 장치 간 연결은 물론, 동일한 장치 내의 프로세스 간 연결도 지원합니다.
  2. 로컬 연결 - 동일한 장치 내의 프로세스 간 연결을 지원합니다. 이 유형의 연결은 기본 운영 체제 기능에 따라 오버헤드가 더 적을 수 있습니다.

로컬 연결의 경우 고유한 이름을 사용해야 합니다. TCP 연결의 경우 고유한 주소와 포트 번호 조합을 지정해야 합니다.

현재 QtRO에는 제로컨피(zeroconf) 기능이 포함되어 있지 않습니다. 따라서 모든 프로세스나 장치는 서로 어떻게 연결할지 미리 알고 있어야 합니다. 여러 호스트 노드가 있는 네트워크의 연결 과정을 간소화하기 위해 호스트 노드 구성 파일( QRemoteObjectRegistry )을 사용할 수 있습니다.

아래 표는 사용 가능한 연결 유형을 요약한 것입니다:

URL비고
("local:service")노드 간 통신에 (내부적으로) {QLocalServer}/{QLocalSocket} 클래스를 사용합니다.
("tcp://192.168.1.1:9999")노드 간 통신에 (내부적으로) {QTcpServer}/{QTcpSocket} 클래스를 사용합니다.
("qnx:service")QNX OS 전용입니다. 노드 간 네이티브 통신에 사용자 정의(명명된) 채널을 사용합니다.
("localabstract:service")6.2 버전부터. Linux/Android OS 전용입니다. Unix 도메인 소켓을 위해 추상 네임스페이스를 사용합니다. 이를 통해 쓰기 불가능한 장치에서도 QLocalSocket 동작이 가능합니다.

노드에는 네트워크에서 객체를 공유하는 데 사용되는 몇 가지 enableRemoting() 메서드가 있습니다. 그러나 노드가 호스트 노드가 아닌 경우 오류가 반환됩니다.

공유 객체와 상호작용을 원하는 다른 프로세스나 장치는 node's acquire() 메서드 중 하나를 사용하여 복제본을 생성할 수 있습니다.

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