4

1台のサーバーが複数のクライアントにブロードキャストしている場合、MulticastSocketとDatagramSocketのどちらがより高速で効率的な実装になりますか?

説明も話し合ってください、ありがとうございます!

渡されるメッセージには、文字列と浮動小数点数が含まれます。

4

4 に答える 4

6

決定要因は通常、クライアントが同じネットワーク上にあるか、それ以外の場合はマルチキャスト対応/リンクされたネットワーク上にあるかです。一般に、マルチキャストはどの形式のユニキャストよりもはるかに効率的ですが、マルチキャストは信頼性が低く、通信事業者がマルチキャストトラフィックを無効にする傾向があるインターネットなどの異種ネットワークでは機能しません。

データの信頼性が必要な場合は、TCPユニキャストを使用するか、マルチキャストに何らかの形式のFECを追加して、データストリームに信頼性のようなものを与える必要があります。トラフィックがインターネット上を移動する必要がある場合は、ユニキャストTCPまたはUDPを使用する必要があります。

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

注:一定量のデータ損失を超えるTCPも信頼性がなくなり(切断が発生します)、ユニキャストからの追加トラフィックにより、データフローの量が増えるため、その制限が押し下げられる可能性があります。FECは、非常に多くのクライアントに対しても比較的固定されたオーバーヘッドを追加しますが、FECもユニキャストも役に立たなくなった時点があり、実行可能なソリューションを実現するには、ネットワークを再設計する必要があります。

于 2011-12-19T09:02:23.057 に答える
2

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

データに何が含まれているかは重要ではありません。

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

于 2011-12-19T08:44:26.223 に答える
2

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

于 2011-12-19T09:03:27.503 に答える
0

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

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

于 2016-09-22T13:17:14.067 に答える