Значение смещения NTPUDPClient не является постоянным / надежным на Android - PullRequest
0 голосов
/ 25 сентября 2019

Каждый раз, когда я запускаю следующее (т.е. нажимаю на кнопку), я получаю другое значение смещения :

fun onClick(){
    var client = NTPUDPClient()
    var timeInfo = client.getTime(InetAddress.getByName(ntp))
    timeInfo.computeDetails()
    log("offset: " + timeInfo.offset)
}

Я использую org.apache.commons.net.ntp.NTPUDPClient.

Я делаю следующие наблюдения, которые не могу объяснить:

  • Если я делаю много таких вызовов в течение 20 секунд , значения меняются в пределах 5-15мс .
  • Когда я переключаюсь с мобильного интернет-соединения на соединение WIFI , разница значительно больше - 50 мс (по сравнению со среднимрезультатов моего мобильного соединения).
  • Если я перезапущу свой тест через несколько минут ожидания полученное значение смещения может быть на 200 мс больше или меньше к значениям, которые я получил до

Очевидно, я ожидал получить надежное значение, поэтому я точно знаю, сколько времени на моем локальном устройстве отклоняется от времени NTP-сервера, но онирезультаты далеко не надежны (и несколько сотен миллисекунд явно не надежныДостаточно, по крайней мере, не для моего случая использования, когда я пытаюсь добиться синхронизации с ошибкой не более нескольких миллисекунд).

Может кто-нибудь объяснить мне, почему эти значения смещения так сильно меняются?И кто-нибудь знает, как вместо этого я могу добиться надежных результатов?

...