0
Javaから呼び出せるナノ秒の時点までの時間を返すWebサービスはありますか? 私に時間を与える外部ソースが必要です。ローカルで私のJavaアプリケーションでSystem.nanoTime()を呼び出しました。しかし私は他の計算のためにサーバーから時間を呼び出す必要があります。Javaの外部Webサービスからナノ秒単位で時間を取得するには?
おかげ
Javaから呼び出せるナノ秒の時点までの時間を返すWebサービスはありますか? 私に時間を与える外部ソースが必要です。ローカルで私のJavaアプリケーションでSystem.nanoTime()を呼び出しました。しかし私は他の計算のためにサーバーから時間を呼び出す必要があります。Javaの外部Webサービスからナノ秒単位で時間を取得するには?
おかげ
ネットワークタイムプロトコル(NTP)は、コンピュータシステムのクロックを同期することができます。あなたはNTPUDPClientは1つがダウンしている場合を避けるために、NTPクライアントに
使い方
import org.apache.commons.net.ntp.NTPUDPClient;
import org.apache.commons.net.ntp.TimeInfo;
public long getRemoteNTPTime() {
NTPUDPClient client = new NTPUDPClient();
// We want to timeout if a response takes longer than 5 seconds
client.setDefaultTimeout(5000);
//NTP server list
for (String host : hosts) {
try {
InetAddress hostAddr = InetAddress.getByName(host);
TimeInfo info = client.getTime(hostAddr);
return info.getMessage().getTransmitTimeStamp().getTime();
}
catch (IOException e) {
e.printStackTrace();
}
}
client.close();
return null;
}
設定複数のホストを提供し、パッケージのapacheコモンズに
現在の時刻を要求するために、任意のNTPサーバーに接続することができます。ホスティングに近いサーバーを探して、ネットワークの待ち時間を短縮します。たとえば、ntp02.oal.ul.pt
ntp04.oal.ul.pt
ntp.xs4all.nl
私はいくつかのテストを行っていますが、私は疑問があります。info.getReturnTime();の違いは何ですか?とinfo.getMessage()。getTransmitTimeStamp()。getTime()?私の目的は、サーバーの現在の時刻を知ることです。ありがとう – Larx
'info.getReturnTime()'はローカルマシンの時刻です。 'info。 getMessage()。getTransmitTimeStamp()。getTime() 'はNTPサーバーの時刻です。そして、メッセージを受け取った後であなたのローカルマシンの現在時刻を計算するには、 'info.getMessage()。getReceiveTimeStamp()。getTime()'を使います。 – pedrofb