2016-11-06 6 views
0

Javaから呼び出せるナノ秒の時点までの時間を返すWebサービスはありますか? 私に時間を与える外部ソースが必要です。ローカルで私のJavaアプリケーションでSystem.nanoTime()を呼び出しました。しかし私は他の計算のためにサーバーから時間を呼び出す必要があります。Javaの外部Webサービスからナノ秒単位で時間を取得するには?

おかげ

答えて

0

ネットワークタイムプロトコル(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 
+0

私はいくつかのテストを行っていますが、私は疑問があります。info.getReturnTime();の違いは何ですか?とinfo.getMessage()。getTransmitTimeStamp()。getTime()?私の目的は、サーバーの現在の時刻を知ることです。ありがとう – Larx

+0

'info.getReturnTime()'はローカルマシンの時刻です。 'info。 getMessage()。getTransmitTimeStamp()。getTime() 'はNTPサーバーの時刻です。そして、メッセージを受け取った後であなたのローカルマシンの現在時刻を計算するには、 'info.getMessage()。getReceiveTimeStamp()。getTime()'を使います。 – pedrofb

関連する問題