Предположим, у нас есть сервер с тикающими часами (просто целочисленная переменная, которая содержит несколько миллисекунд от эпохи и обновляется каждый раз при изменении системного времени).Синхронизация часов по сети с максимальной точностью
Каждый клиент должен иметь возможность синхронизировать свои собственные часы (а не системные часы! Только абстрактный таймер, целочисленное значение, которое увеличивается со временем) с сервером.
Например, клиент может отправить запрос «sync», и сервер ответит своим текущим значением часов.
Проблема в том, что мы не можем точно знать, сколько времени потребуется на отправку и получение данных. Мы знаем время, прошедшее с момента отправки запроса на получение данных, мы можем разделить эту разницу на 2 и добавить это к значению, полученному от сервера, но это не очень точно!
Существует ли общая концепция синхронизации часов между сервером и клиентом с минимальной разницей значений с обеих сторон после его выполнения?
Есть ли причина, по которой вы не используете ntp? –
Что случилось с NTP? – TZHX
Нет ничего плохого в NTP. Речь шла о концепции, алгоритме, который используется для синхронизации времени между двумя машинами и учета задержки. В этом случае я не говорю о системных часах, а просто абстрактный таймер в программе, который должен быть синхронизирован между двумя экземплярами по сети. –