Qt Remote Objects 노드

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

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

QtRO는 P2P 네트워크이므로 유효한 복제본을 acquire()에 전달하려면 복제본의 노드가 해당 소스를 호스팅하는 노드에 연결되어 있어야 합니다. 호스트 노드는 다른 노드가 연결할 수 있도록 허용하는 노드로, 호스트에 고유 주소를 부여하여 이를 수행합니다. 이 주소는 QRemoteObjectHost 생성자에 제공되거나 setHostUrl 메서드에 의해 설정됩니다. 복제본을 요청받은 노드는 복제본을 초기화하고 최신 상태로 유지하기 위해 호스트 노드에 대한 연결을 설정해야 합니다.

QtRO URL을 사용하여 노드 연결하기

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

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

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

현재 QtRO에는 제로 컨피던스 기능이 포함되어 있지 않습니다. 따라서 모든 프로세스 또는 장치는 서로 연결하는 방법을 미리 알고 있어야 합니다. 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() 메서드 중 하나를 사용하여 복제본을 인스턴스화할 수 있습니다.

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