我需要我的软件与NTP服务器通信以确定本地时钟偏移。我尝试过使用NTP包,但在Windows上运行时它的实现相当糟糕,因为使用System.currentTimeMillis()来确定org.apache.commons.net.ntp包交换之前和之后的时间。您可能知道,也可能不知道,这个值只在系统时钟滴答作响时更新,在大多数现代Win2k3服务器上是64 As或每15.625ms。这极大地限制了时钟偏移计算的准确性。
Ntpd使用CPU的高频定时器在系统时钟节拍之间进行插值,并获得更高分辨率的时间。您是否知道使用此技术或类似技术的Java实现?或者,除了Apache之外,您还知道其他的NTP实现吗?
发布于 2009-05-29 09:49:29
在support.ntp.org上有一个NTP Java实现
发布于 2013-06-15 17:48:37
因为这个问题在Google上的"Java NTP客户端“排名非常靠前:
安卓有一个简单的NTP客户端的很好的、紧凑的Apache许可实现:android.net.SntpClient。
需要修改它才能在非Android java上运行,但这应该是微不足道的,因为代码是大约100行代码加上另外100行详细注释,除了Android系统时钟之外没有任何外部依赖它碰巧已经准备好接受像nanoTime()
这样的相对计时器,因为它已经使用了这样一个相对计时器。
发布于 2014-11-28 01:05:22
我已经编写了一个您可以使用的java实现(Java7):SntpClient
https://stackoverflow.com/questions/925191
复制相似问题