Qt Remote Objects Knoten
In einem QtRO-Netzwerk werden Informationen zwischen Prozessen über QRemoteObjectNodes („Knoten“) weitergegeben. Diese Peer-to-Peer-Funktionalität nutzt eine geringe Anzahl unterschiedlicher Pakete, um die erforderlichen Daten zwischen den Knoten zu übertragen.
Jeder Prozess, der am Netzwerk teilnimmt, instanziiert einen auf Knoten basierenden Typ, wie z. B. „ QRemoteObjectNode “, „ QRemoteObjectHost “ oder „ QRemoteObjectRegistryHost “. Die Host-Typen der Knoten bieten zusätzliche Funktionen. Sowohl „ QRemoteObjectHost “ als auch „ QRemoteObjectRegistryHost “ unterstützen die Methoden „ enableRemoting()“ und die entsprechende „ disableRemoting()“, die die wichtigsten Methoden sind, um Quellobjekte dem Netzwerk zugänglich zu machen. Um die Registry- Funktionalität nutzen zu können, muss ein „ QRemoteObjectRegistryHost “ im Netzwerk vorhanden sein. Anschließend können alle anderen Knoten die URL des RegistryHosts an den Konstruktorparameter „ registryAddress “ des Knotens übergeben oder die URL an die Methode „ setRegistryUrl()“ übergeben.
Da QtRO ein Peer-to-Peer-Netzwerk ist, muss der Knoten der Replik mit dem Knoten verbunden sein, der ihre Quelle hostet, um eine gültige Replik mit ` acquire()` zu erstellen. Ein Host-Knoten ist ein Knoten, der es anderen Knoten ermöglicht, eine Verbindung zu ihm herzustellen. Dies wird durch die Vergabe eindeutiger Adressen an die Hosts erreicht. Diese Adresse wird dem Konstruktor „ QRemoteObjectHost “ übergeben oder über die Methode „setHostUrl“ festgelegt. Der Knoten, von dem eine Replik angefordert wird, muss die Verbindung zum Host-Knoten herstellen, um die Replik zu initialisieren und auf dem neuesten Stand zu halten.
Verbinden von Knoten mithilfe von QtRO-URLs
Host-Knoten verwenden benutzerdefinierte URLs, um Verbindungen zu vereinfachen. Derzeit unterstützt QtRO zwei Arten von Verbindungen:
- Eine TCP-Verbindung unter Verwendung des Standard-TCP/IP-Protokolls – unterstützt Verbindungen zwischen Geräten sowie zwischen Prozessen auf demselben Gerät.
- Eine lokale Verbindung – unterstützt Verbindungen zwischen Prozessen auf demselben Gerät. Diese Art der Verbindung kann je nach den Funktionen des zugrunde liegenden Betriebssystems einen geringeren Overhead aufweisen.
Für lokale Verbindungen müssen Sie einen eindeutigen Namen verwenden. Für TCP-Verbindungen müssen Sie eine eindeutige Kombination aus Adresse und Portnummer angeben.
Derzeit verfügt QtRO nicht über eine Zeroconf- Funktion. Daher müssen alle Prozesse oder Geräte im Voraus wissen, wie sie sich miteinander verbinden können. Ein „ QRemoteObjectRegistry “ kann verwendet werden, um den Verbindungsprozess in einem Netzwerk mit mehreren Host-Knoten zu vereinfachen.
Die folgende Tabelle fasst die verfügbaren Verbindungstypen zusammen:
| URL | Hinweise |
|---|---|
| („local:service“) | Verwendet (intern) die Klassen {QLocalServer}/{QLocalSocket} zur Kommunikation zwischen Knoten. |
| ("tcp://192.168.1.1:9999") | Verwendet (intern) die Klassen {QTcpServer}/{QTcpSocket} zur Kommunikation zwischen Knoten. |
| ("qnx:service") | Nur QNX-Betriebssystem. Verwendet einen benutzerdefinierten (benannten) Kanal für die native Kommunikation zwischen Knoten. |
| ("localabstract:service") | Ab Version 6.2. Nur für Linux-/Android-Betriebssysteme. Verwendet einen abstrakten Namensraum für Unix-Domain-Sockets. Dadurch funktioniert das Verhalten von „ QLocalSocket “ auch auf nicht beschreibbaren Geräten. |
Knoten verfügen über einige „ enableRemoting()“-Methoden, die zum Teilen von Objekten im Netzwerk verwendet werden. Ist der Knoten jedoch kein Host-Knoten, wird ein Fehler zurückgegeben.
Andere Prozesse oder Geräte, die mit einem freigegebenen Objekt interagieren möchten, können eine der „ node's acquire() “-Methoden verwenden, um eine Replik zu instanziieren.
© 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.