为了账号安全,请及时绑定邮箱和手机立即绑定

Java NTP客户端

Java NTP客户端

LEATH 2019-12-03 16:32:39
我需要软件与NTP服务器通信以确定本地时钟偏移。我曾尝试使用org.apache.commons.net.ntp程序包,但由于在Windows上运行时它的实现效果很差,因为使用System.currentTimeMillis()来确定NTP数据包交换之前和之后的时间。您可能知道,也可能不知道,该值仅在系统时钟滴答时更新,在大多数现代Win2k3服务器上,频率为64Hz或每15.625ms。这极大地限制了时钟偏移计算的准确性。Ntpd使用CPU高频计时器在系统时钟滴答之间进行插值,并获得更高的分辨率时间。您知道使用这种技术或类似技术的Java实现吗?还是您知道除Apache以外的其他任何NTP实现?
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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


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


它需要进行修改才能在非Android Java上运行,但这应该是微不足道的,因为该代码约为100行代码加上另外100行详细注释,除了Android系统时钟外没有任何外部依赖关系-偶然,nanoTime()因为它已经使用了此类相对计时器,所以可以接受相对计时器。


查看完整回答
反对 回复 2019-12-03
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 615 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信