我想尽可能准确地使用 NTP 同步时间,但我有一个大问题:时间服务器的网络延迟非常多变(范围从 80 毫秒到 900 毫秒)。
考虑延迟的最佳方法是什么?
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?
那是我现在使用的部分 ruby 代码,理论上realDifference
应该总是相等的,但是由于延迟,它每次都不同......
另外,如果我进行几次测试并取平均值,它会更精确吗?任何建议,欢迎提出建议:)