0

Java プログラムは、LAN 上で TCP と UDP の両方を使用して、完全に期待どおりに動作します。ただし、クライアントとサーバーの両方のソケットが稼働していて、パケットが送受信されているにもかかわらず、WAN を介して UDP 側は、せいぜい部分的なシンプレックス データフローを実現します。この原因を特定するために、最も有益な領域はどこでしょうか?

4

2 に答える 2

0

UDP では、各メッセージがネットワーク上にスローされることに注意してください。パケットが相手側に到達するという保証はないため、パケットがいつ失われ、いつそれを繰り返すかを決定するアルゴリズムを開発する必要があります。合計 576 バイト (すべての IP ヘッダーを含む) を超えるデータグラムがネットワーク経由で許可されるという保証はないため、メッセージを分割するか、より大きなデータグラムが失敗したことを検出するための措置を講じる必要があります。ネットワークが一度に処理できるデータグラムの数を知る方法はないため、メッセージの送信速度を調整し、速度を落とすタイミングを知る必要があります。

ワイド エリア ネットワークは、より困難な環境です。競合するトラフィックが増え、リンクが遅くなり、大きなデータグラムに対する耐性が低下します。そのため、LAN では通常回避できることが、WAN ではより多くのエラーにつながります。

したがって、UDP が使用するのに本当に適切なプロトコルであるかどうかを検討してください。

于 2012-02-10T22:05:56.787 に答える
0

送信と受信を別々のスレッドで処理するか、ある種の非同期 IO を使用する必要があります。そうしないと、アプリは WAN 接続を介してロック ストップで実行されます。転送が非常に高速であるため、LAN 上では表示されません。

于 2012-02-10T21:21:44.550 に答える