我正在实现一个客户端-服务器程序,并希望我的客户端在没有来自服务器的 ACK-Answer 的情况下等待 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);
所以我的程序将等待 5 秒的 ACK,如果他没有收到任何东西,他将重新发送相同的数据包。我检查他是否收到了带有数据包长度的确认..如果它保持为0,那么他没有收到任何东西..如果它比0长,那么超出while序列并发送一个新数据包..( ps: ack_dp 是 2bytes)