我有一个 java 程序,当用户按下按钮时,它会向服务器发送一个 udp 数据包。客户端然后等待来自服务器的响应,并旨在记录从发送 udp 数据包到收到响应之间的时间(以毫秒为单位)。
我遇到了一个问题,即时间似乎不准确。它在大多数情况下都能正常工作,给出大约 160 毫秒的值(这是我所期望的)。然而,它有时会进入一个给出值太低(即低于 5 毫秒)的阶段。
我知道消息正在发送,因为我可以看到结果出现在服务器上(而且延迟肯定超过 1 毫秒)。如果我多次向按钮发送垃圾邮件,似乎会出现此问题。
我的代码如下:
public String sendMessage(String message){
long startTime = System.currentTimeMillis();
sendData = message.getBytes();
try{
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String returnString = new String(receivePacket.getData());
//arg1 message, arg2 - transmit time
addConsoleLine(returnString, System.currentTimeMillis() - startTime);
return returnString;
}catch (Exception e){
return "error";
}
}