マシンAとマシンBで、両方ともUbuntu Server 11.04がインストールされた状態で実験を行っています。 AとBは同じ1000M/bpsスイッチに接続されています。受信機なぜこのJavaプログラムはUDPパケットの損失を引き起こしますか?
一方(総< = 10,000) send_udp_datagramPacket(新しいバイトが[100])
BをBである:(真) 受信
一方
Aが送信元であります()
しかし、ついに私は10,000点(約9960点)を得ました。これはどうして起こったのですか? 紛失したパケットはどこに行きましたか?実際にスイッチにワイヤに送られなかったのでしょうか?またはスイッチがそれらを失った?あるいは彼らは本当にBに行きましたが、BのOSはそれらを捨てましたか?それともJavaに到達したのですが、Javaは完全なバッファーのためにそれらを投げ捨てましたか?
ご回答いただければ幸いです。
UDPは接続がなく、保証されません。 UDPパケットを送信すると、*それが受信されるという保証はありません。ローカルネットワークにパケットを流して、いくらか失うことになります。 –
Wiresharkの使用を強くお勧めします。これは、これらの質問のいくつか(例えば、何が電線上にあったかなど)に答えるのに役立ちます。また、ハードウェア全体で異なるUDP負荷をテストするには、単純な「UDP ping」で十分です。 –
upvoted無意味なdownvoteアップ。 – EJP