概要
このドキュメントでは、UDPまたはTCPモジュールを使用して、異なるコンピュータ、デバイス、またはソフトウェア間で通信する方法について説明します。インターネット経由、ローカルネットワーク内、または同じコンピュータ上の異なるアプリケーション間での通信が可能です。
注:Aximmetryには、UDPまたはTCPを使用するさまざまなプロトコルの実装があります。例えば、UDP経由でOSCプロトコルを受信または送信したい場合は、このドキュメントのモジュールではなく、OSC入力および出力設定ドキュメントを参照してください。
UDPとTCP、その違いは?
一般に、UDPはデータ損失が問題にならないリアルタイムの一方向通信に使用されます。
一方、TCPは信頼性の高い接続を提供しますが、UDPよりも遅延が大きく、帯域幅を多く消費します。
UDPの場合、マルチキャストやブロードキャストを使用すると、複数のコンピュータがUDPデータを送信できます。
一方、TCPは1台のコンピュータのみが受信できます。ただし、1台のコンピュータは複数のコンピュータからTCP接続を受け取ることができます。また、TCPは接続ベースのプロトコルであるため、接続されたすべてのコンピュータにデータを送信できます。
UDPでは、送信可能なデータの最大サイズはIPパケットサイズによって制限されています。
TCPの場合、データサイズ制限はありません。なぜなら、Terminatorがデータを分割し、Receivedとして別々のフレームで受信されるためです。
UDP SenderとTCP Client
UDPデータを送信するには、Flow Editor内のUDP Senderモジュールを使用し、TCPデータを送信するにはTCP Clientモジュールを使用できます。
NOTE: Aximmetry内の別のコンピュータでこの送信データを受信したい場合は、UDP ReceiverまたはTCP Serverモジュールを使用できます。
NOTE: TCPは接続ベースのプロトコルであるため、モジュールはClientと呼ばれます。一方、UDPは接続レスであるため、モジュールはSenderと呼ばれます。
入力ピン
- UDP Open と TCP Connect
- ターゲットホストに接続します。データを送信するには、このピンをオンにする必要があります。
- ホスト名
- ローカルネットワークを使用する場合、ターゲットコンピュータのシステム名またはIPアドレスをホスト名として指定できます。
- ホスト名に「localhost」を使用すると、現在のコンピュータにデータを送信できます。これは、UDPまたはTCPを使用して同じコンピュータ上の他のアプリケーションと通信する場合に便利です。また、Flow Editorのロジックを1台のコンピュータのみでテストするにも適しています。詳細は Testing with Localhost をご覧ください。
- ポート
- 1024から65536までの番号。
- 注意:受信側では、特定のポートでリスニングするアプリケーションは1つだけにする必要があります。
- バイナリモード
- テキストデータとバイト(バイナリ)データの送信を切り替えます。
- TCP ターミネーターとTCP ターミネーターバイト
- ターミネーターは、メッセージを構成するバイトまたはテキストの列の終了を指示します。
- ターミネーターはTCPプロトコル自体に内在する機能ではありませんが、TCPと組み合わせて頻繁に使用されます。ターミネーターピンは、特に指定がない限り空に設定する必要があります。または、Aximmetry間でTCPを使用して通信する場合を除きます。
- ターミネーターが指定されている場合、Aximmetryは送信データ末尾にターミネーターを追加します。データを受信する際、Aximmetryはターミネーター文字の到着を待ってからデータを書き込み、ターミネーターを出力から除外します。これにより、受信データにターミネーター文字が含まれていない場合、データは受信されません。さらに、メッセージの内容にターミネーターが含まれないように注意してください。ターミネーターは出力から削除されます。したがって、衝突を避けるため、ターミネーターは一意であり、区別するために複数の文字から構成される場合があります。
- NOTE: UDPの場合、ターミネーターは存在せず、送信データのサイズはIPパケットサイズによって制限されます。
- データとデータバイト
- ターゲットホストに送信されるメッセージのテキストまたはバイト。テキストの代わりにバイトデータを使用するには、バイナリモードピンをオンにします。
- 自動送信と送信
- メッセージの送信は2つの方法で行えます。送信ピンでトリガーすることで、特定の時間に送信できます。または、自動送信をオンにすると、データ値が変更されるたびに自動的に送信されます。
出力ピン
- TCP受信とTCP受信バイト
- TCPは接続が確立されるとデータを送信できるため、TCPクライアントにはUDP受信とTCPサーバーと同様の受信出力ピンが搭載されています。
- フレーム内に複数のメッセージを受信した場合、メッセージはキューに格納され、次の フレーム で順番に処理されます。
- バイトデータを受信する際、これらのモジュールはデータを次のように変換できます:バイトからテキスト、バイトからスカラー、バイトからベクター、バイトから整数。
- TCP 受信
- 新しいデータの到着を通知します。
- TCP 接続
- TCPクライアントのConnected出力ピンは、モジュールがターゲットとの接続を確立した際にTrueになります。ターゲットが別のAximmetry内のTCPサーバーモジュールである場合、同時にTCPサーバーのConnections出力ピンが1増加します。
UDP受信機とTCPサーバー
UDPデータはFlow EditorのUDP受信機モジュールで受信し、TCPデータはTCPサーバーモジュールで受信できます。
データ受信時のデバッグを容易にするため、Text Peeker モジュールを使用して Received ピンを簡単に表示できます:
注: TCP は接続ベースのプロトコルであるため、モジュールは Server と呼ばれます。一方、UDP は接続レスであるため、モジュールは Receiver と呼ばれます。
入力ピン
- Listen
- ポートを開き、着信データまたは接続を待機します。
- アダプター
- 通信に使用するネットワークアダプター。-any-を選択した場合、モジュールはすべてのネットワークアダプターでリスニングします。
- ポート
- 1024から65536までの番号。
- 注意: 選択したポートは、コンピュータ上の他のアプリケーションで使用しないでください。
- バイナリモード
- テキストデータまたはバイト(バイナリ)データの受信を切り替えます。
- TCP ターミネーター、TCP ターミネーター バイト、データ、自動送信、送信
- これらのピンは、TCP クライアント モジュールと同じです。
- UDP マルチキャスト グループ
- マルチキャストは、UDP を複数の異なるコンピュータで受信できるようにします。
- マルチキャスト グループの IP アドレスは、225.0.0.0 から 239.255.255.255 の範囲内である必要があります。
- NOTE: 224.0.0.0 からのアドレスを指定することは可能ですが、予約済みアドレスが各種規格で指定されています。
- UDP 送信モジュールを使用して UDP データを送信する場合、そのホスト名ピンをマルチキャスト グループと同じアドレスに設定する必要があります。
- 注:ルーターが適切に設定されていない場合、インターネット経由でマルチキャストは機能しません。
出力ピン
- 受信と受信バイト
- ポート経由で受信したデータ。テキストではなくバイトデータを使用するには、バイナリモードピンをオンにします。
- フレーム内で複数のメッセージを受信した場合、メッセージはキューに格納され、次のフレームで順番に再生されます。
- バイトデータを受信する際、これらのモジュールはデータを次のように変換できます:バイトからテキスト、バイトからスカラー、バイトからベクター、バイトから整数。
- 受信
- 新しいデータの到着を示します。
- UDP送信元IP
- 最も最近受信したUDPメッセージの送信元のIPアドレスを出力します。これにより、データを送信したリモートデバイスを特定できます。
- UDP送信元ポート
- 最も最近受信したUDPメッセージの送信元ポート番号を出力します。
- リスニング
- リスニング出力ピンは、リスニングピンが正常にオンになり、モジュールがポートでデータパケットの受信を開始するとTrueになります。
- TCP接続
- TCPサーバーモジュールと接続を確立したコンピュータの数。
UDP返信
UDP Senderは、Replyリファレンスピンを介して接続されている場合、UDP Receiverが受信したメッセージに同じソケット経由で返信できます。
ローカルホストでのテスト
Receivedピン後にUDP SenderまたはTCP Clientモジュールを追加し、ホスト名を「localhost」に設定すると、モジュールは現在のコンピュータにデータを送信します。このデータを同じコンパウンドで受信できます:
複雑なデータの構造化
複雑なデータを使用する場合、データを █ Collection pin データ型に格納し、Collection To JSON または Collection To XML モジュールを使用してテキストに変換できます。その後、テキストをモジュールの Data pinに接続できます。このようなデータを受信する際は、JSON Text または XML Text モジュールを使用してコレクションにパースできます。
例: