Qt Remote Objects ノード
QtRO ネットワークでは、情報は QRemoteObjectNodes(「ノード」)を介してプロセス間でやり取りされます。このピア・ツー・ピア機能では、ノード間で必要なデータをやり取りするために、少数の特定のパケットが使用されます。
ネットワークに参加する各プロセスは、QRemoteObjectNode 、QRemoteObjectHost 、QRemoteObjectRegistryHost などの Node ベースの型をインスタンス化します。Node のホスト型は、追加の機能を提供します。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() メソッドのいずれかを使用して、レプリカをインスタンス化できます。
© 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.