1
采取我有当用户按下一个按钮,用于发送一个UDP分组到服务器的Java程序的时间。然后客户端等待来自服务器的响应,旨在记录时间在毫秒之间时,UDP数据包被发送和接收响应时。java的插座 - 测量为发送响应&
我有一个问题,由此定时似乎不准确。它工作正常,大部分的时间给周围160毫秒的值(这是我所期望的)。然而,它有时会进入一个给出低值(即低于5ms)值的阶段。
我知道的消息被发送,我可以看到的结果出现在服务器上(它比1ms的延迟肯定更)。如果我多次发送垃圾按钮,这个问题似乎就会发生。
我的代码如下:
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";
}
}
啊,我认为这似乎很有可能,有关如何解决此问题的任何想法? – 2012-04-04 03:47:50
UDP的定义是“bes t努力“只。您必须在数据包中定义自己的协议(即序列号)。 – 2012-04-04 03:58:16
@Adam罗杰斯尝试把“发送时间”的消息! – 2012-04-04 05:54:48