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?
これは私が現在使用している部分的なルビーコードです。理論的にrealDifference
は常に等しいはずですが、レイテンシーのために毎回異なります...
また、私がいくつかのテストを行い、平均を取る場合、それはより正確でしょうか?任意の提案、推奨事項を歓迎します:)