Я разрабатываю программное обеспечение клиент/сервер и ищу лучший способ синхронизировать часы клиента с часами сервера.
Конечно, я не могу использовать NTP, потому что не хочу трогать системные часы. . Я просто пытаюсь вычислить временной интервал, чтобы добавить его к каждому дате и времени, полученному с сервера, чтобы преобразовать его в «местное время».
Что я знаю, так это то, что:
Я решаю проблемы с часовым поясом, используя время по Гринвичу.
Сервер отправляет свое текущее время клиенту при подключении, а клиент вычитает время сервера из своего времени, чтобы вычислить временной интервал.
Это прекрасно работает, когда задержка сети постоянна (читай "моя локальная сеть"...)
К сожалению, я хочу, чтобы мое программное обеспечение работало в Интернете и даже на мобильных клиентах, для которых я наблюдал вариации задержки до 1 минуты.
Для программного обеспечения, над которым я работаю, такое отставание недопустимо.
Какой была бы хорошая стратегия для вычисления временного интервала клиент/сервер?
Последнее: я могу отправлять сообщения в обоих направлениях (клиент на сервер и сервер на клиент)
Это, вероятно, не имеет значения, но технология, стоящая за этим, представляет собой клиент .net WCF, использующий httpbinding с некоторым опросом.