Qt Remote Objects ノード
QtROネットワークでは、QRemoteObjectNodes(以下「ノード」)を介してプロセス間で情報をやり取りします。このピアツーピア機能は、ノード間で必要なデータを受け渡す少数の異なるパケットを使用します。
ネットワークに参加する各プロセスは、QRemoteObjectNode 、QRemoteObjectHost 、QRemoteObjectRegistryHost などのノード・ベースのタイプをインスタンス化します。 ノードのホスト・タイプは、追加の機能を提供します。QRemoteObjectHost とQRemoteObjectRegistryHost はいずれも、enableRemoting ()と対応するdisableRemoting ()メソッドをサポートしています。これらは、ソース・オブジェクトをネットワークに公開するための重要なメソッドです。レジストリ機能を使用するには、ネットワーク上にQRemoteObjectRegistryHost が必要です。次に、他のすべてのノードは、RegistryHost の URL を Node のregistryAddress
コンストラクタのパラメータに渡すか、setRegistryUrl() メソッドに URL を渡します。
QtRO はピアツーピアのネットワークであるため、acquire() が有効なレプリカであるためには、レプリカのノードはそのソースをホストしているノードに接続されている必要がある。ホストノードとは、他のノードが接続できるようにするノードで、ホストに一意なアドレスを与えることで実現します。このアドレスは、QRemoteObjectHost コンストラクタで指定するか、setHostUrl メソッドで設定します。レプリカを要求されたノードは、ホストノードとの接続を確立し、レプリカを初期化し、最新の状態に保つ必要があります。
QtRO URL を使用したノード接続
ホストノードでは、接続を簡単にするためにカスタム URL を使用します。現在、QtRO は2種類の接続をサポートしています:
- 標準 TCP/IP プロトコルを使った TCP 接続 - デバイス間の接続と、同じデバイス上のプロセス間の接続をサポートします。
- ローカル接続 - 同じデバイス上のプロセス間の接続をサポートします。このタイプの接続は、基盤となるオペレーティング・システムの機能によっては、オーバーヘッドが少ない場合があります。
ローカル接続では、一意の名前を使用する必要があります。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() メソッドのいずれかを使用して、レプリカをインスタンス化できます。
© 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.