Von dem, was ich verstehe, müssen Sie nur Übertragungszeit berechnen, die Zeit ist, die Anfrage-Antwort nehmen.
Also statt der Rückkehr nano, was können Sie tun currentTimeMillis()
anruft, bevor die Verbindung hergestellt wird:
long sTime = System.currentTimeMillis();
Und dann, nachdem Sie eine Antwort Verwendung erhalten:
long fTime = System.currentTimeMillis();
long elapsedTime = fTime - sTime;
wie kann Ich bekomme die Nummer im lesbaren Format?
DateFormat.getInstance().format(elapsedTime);
Das Obige kann auf System.NanoTime()
angewendet werden, ob Sie nano verwenden möchten oder Milli seine eine Frage der (Genauigkeit Vs. Leistung), wenn Sie eine extrem präzise Messungen und seine wichtiger als Leistung Sie wollen Dann benutze Nano.
Natürlich müssen Sie daran denken, dass elapsedTime von Zeit zu Zeit variieren wird, da es viel mehr als eine gute Implementierung gibt, also erwarten Sie nicht, dass es konstant ist.
Edit 1:
ich Dateformat mit Nanotime verwenden, weil ich sehr kleine Zeit brauchen, aber ich habe 1.1.1970 03.28 !! 10^-9 Sekunden würde alles was ich brauche ist wie (123455 Nanosekunde Zeit Sende)
Und das ist, warum ich System.currentTimeMillis
in meinem Beispiel als Nanozeitform, verwendet haben, eine größere Granularität zu bekommen System.currentTimeMillis()
verwenden, oder Sie
TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS);
Wenn Sie nicht wollen, TimeUnit
verwenden nur die Nummer teilen, die Sie von 1000000000
bekommen: mit einfach nano Sekunden konvertieren.
Sie möchten den Zeitunterschied zwischen zwei Geräten in Nanosekunden messen? Ihre Daten werden * sehr * laut aufgrund der natürlichen [Uhrdrift] (https://en.wikipedia.org/wiki/Clock_drift) zwischen den Geräten. – Krease
Das ist Mathematik .... Wenn Sie einen Wert wie E12 erhalten, bedeutet das, dass Sie den Punkt um 12 Positionen nach rechts setzen, um den Wert zu erhalten. Sie erhalten also die richtigen Werte, aber das Gerät konnte es nicht mit so vielen Zahlen anzeigen. Ich glaube nicht, dass es möglich ist, die gleichen Werte zu erhalten, indem man zum Server sendet und auswertet. In Nanosekunden ist zu viel Zeit zwischen diesen Schritten ... – Opiatefuchs
Auch von [Javadoc auf NanoTime] (https://docs.oracle.com/javase/8/docs/api/java/lang/System.html # nanoTime--) - "Diese Methode kann nur verwendet werden, um die verstrichene Zeit zu messen und steht nicht im Zusammenhang mit irgendeiner anderen Vorstellung von System- oder Wanduhrzeit. Der zurückgegebene Wert repräsentiert Nanosekunden seit einer festen, aber beliebigen Ursprungszeit (vielleicht in der Zukunft, so dass die Werte negativ sein können. Der gleiche Ursprung wird von allen Aufrufen dieser Methode in einer Instanz einer Java Virtual Machine verwendet, andere Instanzen von virtuellen Maschinen verwenden wahrscheinlich einen anderen Ursprung. " - ** Sie können sie nicht über Geräte hinweg vergleichen ** – Krease