0

Udpパケットをサーバーに送信しました。サーバーが正常な場合は応答パケットを正常に受信できますが、サーバーがダウンしている場合は応答パケットを取得できませんでした。応答パケットの受信に失敗したときに、パケットをサーバーに複数回送信するにはどうすればよいか、誰でも助けてくれます。また、サーバーとの接続を維持したい。前もって感謝します。

4

1 に答える 1

0

良い、

  1. パケットを送信したら、サーバーからの ACK (応答) パッケージを待ちます。DatagramSocket.setSoTimeout() を適切な時間に使用できます。タイムアウト例外がカウンターをインクリメントする場合、そのカウンターが 2/3 未満の場合はパケットを再度送信し、これらの手順を繰り返します。カウンターが 2/3 よりも大きい場合は、サーバーがダウンしています。そのまま終了してください。

    Java のドキュメントによると、パッケージが受信されるかタイムアウトになるまで receive はブロックされます。

  2. 接続を維持するには、ピンポンを実装する必要があります。プログラムの別のスレッドで、Keep-Alive パケットを送信し (小さなパケットであれば何でも構いません)、応答を待ちます。これらのパケットが通常のデータ パケットと混同しないように、この目的のために別のポート番号を使用することをお勧めします。これらのパケットは、特定のニーズに応じて、2 秒または 2 分ごとに送信できます。スレッドが ACK パケットを受信すると、プライベート時刻変数を現在の時刻で更新します。次に例を示します。

    lastTimeSeen = System.currentTimeMillis();

    その変数の値にアクセスするメソッドをスレッド クラスに配置します。

于 2013-05-16T14:48:28.810 に答える