Qt Remote Objects Nœuds
Dans un réseau QtRO, les informations sont transmises entre les processus via des QRemoteObjectNodes (« nœuds »). Cette fonctionnalité peer-to-peer utilise un petit nombre de paquets distincts pour transmettre les données nécessaires entre les nœuds.
Chaque processus participant au réseau instancie un type basé sur un nœud, tel que QRemoteObjectNode, QRemoteObjectHost ou QRemoteObjectRegistryHost. Les types hôtes des nœuds fournissent des fonctionnalités supplémentaires. Les classes QRemoteObjectHost et QRemoteObjectRegistryHost prennent toutes deux en charge les méthodes enableRemoting() et disableRemoting() correspondantes, qui sont les méthodes clés permettant d’exposer les objets source au réseau. Pour utiliser la fonctionnalité de registre, vous devez disposer d’un QRemoteObjectRegistryHost sur le réseau. Ensuite, tous les autres nœuds peuvent transmettre l’URL du RegistryHost au paramètre du constructeur registryAddress du nœud, ou transmettre cette URL à la méthode setRegistryUrl().
QtRO étant un réseau peer-to-peer, pour appeler la méthode ` acquire()` sur une réplique valide, le nœud de la réplique doit être connecté au nœud qui héberge sa source. Un nœud hôte est un nœud qui autorise d’autres nœuds à s’y connecter, ce qui est rendu possible en attribuant des adresses uniques aux hôtes. Cette adresse est fournie au constructeur QRemoteObjectHost ou définie par la méthode setHostUrl. Le nœud à partir duquel une réplique est demandée doit établir la connexion avec le nœud hôte, afin d’initialiser la réplique et de la maintenir à jour.
Connexion des nœuds à l’aide d’URL QtRO
Les nœuds hôtes utilisent des URL personnalisées pour simplifier les connexions. Actuellement, QtRO prend en charge deux types de connexions :
- Une connexion TCP utilisant le protocole TCP/IP standard : prend en charge les connexions entre appareils ainsi qu’entre processus sur un même appareil.
- Une connexion locale : prend en charge les connexions entre processus sur un même appareil. Ce type de connexion peut présenter une charge moindre, en fonction des fonctionnalités du système d’exploitation sous-jacent.
Pour les connexions locales, vous devez utiliser un nom unique. Pour les connexions TCP, vous devez fournir une combinaison unique d’adresse et de numéro de port.
Actuellement, QtRO ne dispose pas de fonctionnalité zeroconf. Par conséquent, tous les processus ou périphériques doivent savoir à l’avance comment se connecter les uns aux autres. Un fichier « QRemoteObjectRegistry » peut être utilisé pour simplifier le processus de connexion sur un réseau comportant plusieurs nœuds hôtes.
Le tableau ci-dessous récapitule les types de connexion disponibles :
| URL | Remarques |
|---|---|
| (« local:service ») | Utilise (en interne) les classes {QLocalServer}/{QLocalSocket} pour la communication entre les nœuds. |
| (« tcp://192.168.1.1:9999 ») | Utilise (en interne) les classes {QTcpServer}/{QTcpSocket} pour la communication entre les nœuds. |
| (« qnx:service ») | Système d’exploitation QNX uniquement. Utilise un canal personnalisé (nommé) pour la communication native entre les nœuds. |
| (« localabstract:service ») | Depuis la version 6.2. Systèmes d’exploitation Linux/Android uniquement. Utilise un espace de noms abstrait pour les sockets de domaine Unix. Cela permet au comportement de ` QLocalSocket ` de fonctionner sur des périphériques non accessibles en écriture. |
Les nœuds disposent de quelques méthodes ` enableRemoting()` qui servent à partager des objets sur le réseau. Cependant, si le nœud n’est pas un nœud hôte, une erreur est renvoyée.
Les autres processus ou périphériques souhaitant interagir avec un objet partagé peuvent utiliser l’une des méthodes ` node's acquire() ` pour instancier une réplique.
© 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.