クライアントとサーバーの間にコールバック関数を実装しています。
クライアントは自身をサーバーに登録し、イベントが発生すると、サーバーはデータグラムパケットをクライアントに送信して、クライアントにイベントについて通知します。
クライアントは、ユーザーが指定したリスニング期間全体を通してブロックされます
ブロックされると、このループに入り、サーバーのコールバックをリッスンし続けます。
while (waiting) {
aSocket.setSoTimeout(0);
aSocket.receive(reply);
String replyString = new String(reply.getData()).trim();
System.out.println(replyString);
buffer = new byte[1000];
reply = new DatagramPacket(buffer, buffer.length);
}
リスニング期間が終了した後、待機の値をtrueからfalseに変更するtimertaskを使用してタイマーをコーディングしました。
私の問題は、リスニング期間が終了したら、クライアントにリスニングを停止させたいということです。ただし、タイマーを使用しても、クライアントはでブロックされます
aSocket.receive(reply);
このコードをスキップしてループを終了する方法を知っている人はいますか?
どうもありがとうございます。