我想尽可能准确地使用NTP同步时间,但我遇到了一个大问题:时间服务器的网络延迟变化很大(范围从80ms到900ms)。
考虑延迟的最佳方法是什么?
sock = UDPSocket.new
sock.connect("pool.ntp.org", "ntp")
timeStart = Time.new.to_f
sock.print ntp_msg
sock.flush
#maybe I should put here timeStart?
sock.recvfrom
timeEnd = Time.new.to_f
latency=timeEnd-timeStart
timeDifference = ntp_recv_time-timeStart
realDifference = timeDifference-latency # maybe should divide latency or what?
我现在使用的部分红宝石代码,理论上realDifference
应该始终相同,但是由于延迟,它每次都不同......
如果我做了几次测试并取平均值会更准确吗? 任何建议,建议欢迎:)