1
ユーザーがボタンを押したときにudpパケットをサーバーに送信するJavaプログラムがあります。次に、クライアントはサーバーからの応答を待ち、udpパケットが送信されてから応答が受信されるまでの時間をmsで記録することを目指します。javaソケット - 送信と応答にかかる時間の測定
タイミングが正確ではないような問題があります。ほとんどの場合、ほぼ160msの値を与えています(これは私が期待しているものです)。しかし、時には低い(すなわち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";
}
}
ああ、私はそれが非常に高いと思われると思います。この問題を回避する方法上の任意のアイデアは? –
UDPは定義通りです "bes 「努力」のみ。パケット内に独自のプロトコル(つまり、シーケンス番号)を定義する必要があります。 –
@Adam Rogersはメッセージに「send time」を入れようとしています! –