MulticastSocket
ネットワーク検出を実行するために、Java で を実装するプログラムがあります。問題は、サーバーArrayList
が特定のポート (私の場合は 4446) に 5 秒ごとにアクティブな共有のシリアル化されたいくつかのパケットを送信し、クライアントがそれを受信することです。ただし、ArrayList
が変更された場合、サーバーは次の送信時にそれを送信しますが、クライアントは受信時にサーバーがかなり前に送信した古いパッケージを受信します。
次に例を示します。
ArrayList
は 1 つの要素を持っています。
サーバー -> 送信 -> 5 秒待機 -> パケット #2 の送信 -> 5 秒待機 ->タイム フレーム中に変更ArrayList
-> パケット #3 の送信
クライアント -> アクティブな共有を検索 -> パケット #1 を受信 -> 1 つの要素! わかった!... (無期限に待機できます - この時点までに #2 と #3 がサーバーから送信されています)
クライアント -> アクティブな共有を検索 -> #packet 2 を受信 -> 1 つの要素。番号。
そして、(理想的には) パケット #3 を受信する必要があるため、すべての一貫性が失われます。
クライアントが送信された最新のパケットを常に受信するようにする方法はありますか? ありがとうございました。