2011-12-19 9 views

答えて

5

通常、クライアントが同じネットワーク上にあるか、それ以外のマルチキャスト対応ネットワークにあるかどうかは、決定要因になります。一般的に、マルチキャストはユニキャストよりもずっと効率的ですが、マルチキャストは信頼性が高くなく、インターネットなどの異種ネットワークでは動作しません。マルチキャストトラフィックを無効にする傾向があります。

信頼できるデータが必要な場合は、TCPユニキャストを使用するか、データストリームに信頼性を与えるためにFECの形式を追加する必要があります。インターネットでは、ユニキャストTCPまたはUDPを使用する必要があります。

短いバージョン:データが小さい場合は、信頼性が必要で、インターネットを横断したり、まれに送信されたりする場合は、ユニキャストを使用してください。データが大規模で、多数のクライアントに配信され、損失を許容し、制御しているネットワークまたはマルチキャストが有効なネットワークのみを通過する場合は、マルチキャストを使用します。マルチキャストは実際には1つのトリックポニー(同種ネットワーク上では信頼性の低いデータブロードキャスト)ですが、ユニキャストはほとんどの処理を実行できますが、オーバーヘッドは高くなります。

注:一定量のデータ損失を超えるTCPも信頼性が失われ(切断されます)、ユニキャストからのトラフィックが増加すると、データフローの量が増えるため、その制限を押し下げる可能性があります。 FECは、非常に多くのクライアントでも比較的固定されたオーバーヘッドを追加しますが、FECもユニキャストももう助けにならないポイントがあり、実行可能なソリューションを実現するためにはネットワークをリエンジニアリングする必要があります。

2

複数のサブネットワーク上にクライアントがある場合は、マルチキャストが最適です。ブロードキャストは、データを1つのサブネットワークのみに送信する場合は、わずかに効率的になります。しかし、差がかなり薄いので、マルチキャストが通常使用されます。

データに含まれるものは重要ではありません。

信頼性の高い配信が必要な場合は、TCPを使用する方が簡単で、場合によってはさらに高速になることもあります(ルータはTCP用に最適化される傾向があります)。

2

あなたの質問は不明です。あなたがブロードキャストしている場合は、DatagramSocketまたはMulticastSocketを使用しても差はありません。マルチキャストがブロードキャストよりも効率的かどうかを確認するには、(a)回答が「はい」で、(b)で、マルチキャストを受信するにはMulticastSocketを使用する必要があります。 を送信する場合は、DatagramSocketまたはMulticastSocketのいずれかを使用することができ、効率に違いはありません。

0

マルチキャストはデータグラムソケットよりも効率的ですが、UDPも使用するため、すべての受信者がデータパケットを受信する保証はありません。パケットの優先順位を決定するネットワークで管理されたスイッチを使用していない限り、ネットワークの使用状況に関係なく、ランダムな順序でパケットを失う可能性が最も高いです。

リスナーをマルチキャストする必要があるネットワーク内のデバイスの数が限られている場合は、各デバイスにTCPユニキャストを行い、何らかのネットワークサービスディスカバリを使用してデバイスを見つけることをお勧めします。

関連する問題