0
是否有一个web服务将时间返回到可以从java调用的纳秒级别? 我需要一个给我时间的外部资源。本地在我的Java应用程序中,我调用了System.nanoTime();但我需要从服务器调用其他计算的时间。如何从Java的外部web服务中获得纳秒级的时间?
谢谢
是否有一个web服务将时间返回到可以从java调用的纳秒级别? 我需要一个给我时间的外部资源。本地在我的Java应用程序中,我调用了System.nanoTime();但我需要从服务器调用其他计算的时间。如何从Java的外部web服务中获得纳秒级的时间?
谢谢
网络时间协议(NTP)允许同步计算机系统的时钟。您可以连接到任何一个NTP服务器请求当前时间
NTPUDPClient在包阿帕奇百科全书提供了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;
}
配置几台主机,以避免如果一个人下来。在您的主机附近寻找服务器以减少网络延迟。例如
ntp02.oal.ul.pt
ntp04.oal.ul.pt
ntp.xs4all.nl
我正在做一些测试,我有一个疑问,有什么区别info.getReturnTime();和info.getMessage()。getTransmitTimeStamp()。getTime()?我的目的是了解服务器中的当前时间。谢谢 – Larx
'info.getReturnTime()'是你本地机器的时间。 '信息。 getMessage()。getTransmitTimeStamp()。getTime()'是NTP服务器的时间。并且要在收到消息后计算本地机器中的当前时间,请使用'info.getMessage()。getReceiveTimeStamp()。getTime()' – pedrofb