ユーザーがボタンを押すと、サーバーにudpパケットを送信するJavaプログラムがあります。次に、クライアントはサーバーからの応答を待機し、udpパケットが送信されてから応答が受信されるまでの時間をミリ秒単位で記録することを目的としています。
タイミングが正確に見えないという問題があります。ほとんどの場合、正常に動作し、約160msの値が得られます(これは私が期待するものです)。ただし、低い値(つまり、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";
}
}