私はクライアントサーバープログラムを実装しており、サーバーからのACK応答なしで5秒間待機した後、クライアントが同じパケットを送り返すことを望んでいました...
こんな感じで作ったので良かったら教えてください..
dp = new DatagramPacket(packet , packet.length , host , port);
sock.send(dp);
time = System.currentTimeMillis();
while ((System.currentTimeMillis() - time < 5000) && ack_dp.getLength() == 0) {
sock.receive(ack_dp);
}
if (ack_dp.getLength() == 0)
sock.send(dp);
したがって、私のプログラムは ACK を 5 秒間待機し、何も受信しない場合、同じパケットを再送信します。彼が ack を受信したかどうかをパケット長でチェックします.. 0 のままの場合、彼は何も受信していません.. 0 より長くなる場合は、while シーケンスを終了して、新しいパケットを送信します.. ( ps: ack_dp は 2 バイトです)