0

それらのパケットは単に消えていますか?それとも彼らは目的地を待ちますか?または、パケットが戻ってから例外がスローされますか?

また、Java では、DatagramPacket コンストラクターで、byte[] バッファーと長さの違いは何ですか?

DatagramPacket dp = new DatagramPacket(new byte[...], length);
4

4 に答える 4

3

ウィキペディアから:

UDPは...信頼できない–メッセージが送信されたとき、メッセージが宛先に到達するかどうかを知ることはできません。途中で迷子になる可能性があります。確認応答、再送信、またはタイムアウトの概念はありません。

于 2011-01-03T17:32:15.193 に答える
1

宛先がオンラインであっても、UDP パケットが到着するか、送信された順序で到着するか、フラグメント化されないという保証はありません。(532 バイトより小さいパケットはフラグメント化されないと思います) 3 つすべてを持つことは可能です。同じパケットに対して断片化され、順序が乱れ、不完全です。

ネットワークの単純さと安定性によって、UDP パケット配信の堅牢性が決まりますが、少なくとも一定の時間は信頼できないと想定する必要があります。できることは、損失を最小限に抑えることだけです。

パケットが失われた場合にどうするか、およびそれを検出する方法を決定するのはあなた次第です。

メッセージのブロードキャストで信頼性の高い配信が必要な場合は、ActiveMQ などの JMS トピックまたはキューを検討することをお勧めします。

于 2011-01-03T17:41:34.023 に答える
0

UDP プロトコルを使用している場合、パケットが受信されることを保証できません。答えは、送信先がオンラインでなくても送信されるということです。

TCP プロトコルは、顧客がパケットを受信することを保証します。彼がオフラインであっても、オンラインになると、そのパケットが受信されます。

于 2011-01-03T19:05:01.600 に答える