Java NTP客户端

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

Ntpd使用CPU高频计时器在系统时钟滴答之间进行插值,并获得更高的分辨率时间。您知道使用这种技术或类似技术的Java实现吗?还是您知道除Apache以外的其他任何NTP实现?


LEATH
浏览 618回答 3
3回答

慕后森

由于此问题在Google上对于“ Java NTP客户端”的排名很高:Android具有一个简单的NTP客户端的漂亮,紧凑的Apache许可实现:android.net.SntpClient。它需要进行修改才能在非Android Java上运行,但这应该是微不足道的,因为该代码约为100行代码加上另外100行详细注释,除了Android系统时钟外没有任何外部依赖关系-偶然,nanoTime()因为它已经使用了此类相对计时器,所以可以接受相对计时器。

慕工程0101907

如果您使用的是Java 5或更高版本,可以使用System.nanoTime()来更精确地测量时间偏移吗?您必须修改现有的NTP代码,但是您应该拥有它的源代码,而且我并不认为这很困难。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java