Java NTP客户端

Mat*_*lls 19 java ntp

我需要我的软件与NTP服务器通信以确定本地时钟偏移.我尝试过使用org.apache.commons.net.ntp软件包,但是在Windows上运行时它的实现相当差,因为使用System.currentTimeMillis()来确定NTP数据包交换之前和之后的时间.您可能知道或者可能不知道,此值仅在系统时钟滴答时更新,在大多数现代Win2k3服务器上为64Hz或每15.625ms.这极大地限制了时钟偏移计算的准确性.

Ntpd使用CPU高频定时器在系统时钟周期之间进行插值,并实现更高的分辨率时间.您是否知道使用此技术或类似技术的Java实现?或者您知道除Apache之外的任何其他NTP实现吗?

dfa*_*dfa 10

support.ntp.org上有一个NTP Java实现


Jan*_*bal 10

由于此问题在Google上的"Java NTP客户端"排名很高:

Android有一个很好的,紧凑的Apache许可的简单NTP客户端实现:android.net.SntpClient.

它需要被修改为在非Android java上运行,但这应该是微不足道的,因为代码大约是100行代码加上另外100行详细注释,除了Android系统时钟之外没有外部依赖 - 并且偶然,它已准备好接受相对定时器,nanoTime()因为它已经使用了这样的相对定时器.


Bri*_*new 3

如果您使用的是 Java 5 或更高版本,您可以使用System.nanoTime()来执行更准确的时间偏移测量吗?您必须修改现有的 NTP 代码,但您应该拥有它的源代码,而且我认为这不会很困难。