Как вы вычисляете промежуток времени клиент / сервер? - PullRequest
1 голос
/ 02 марта 2009

Я занимаюсь разработкой клиент-серверного программного обеспечения и ищу наилучший способ синхронизации моих клиентских часов с часами сервера.

Конечно, я не могу использовать NTP , потому что я не хочу касаться системных часов. Я просто пытаюсь вычислить интервал времени, чтобы я мог добавить его к каждой дате, полученной от сервера, чтобы преобразовать его в «местное время»

Что я знаю, так это:

  • Я решаю проблемы с TimeZone, используя время по Гринвичу

  • Сервер отправляет свое текущее время Клиенту при подключении, и Клиент вычитает время сервера из своего времени для вычисления промежутка времени.

Это прекрасно работает, когда задержка в сети постоянна (читай "моя ЛВС" ...)

К сожалению, я хочу, чтобы мое программное обеспечение работало в Интернете и даже на мобильных клиентах, для которых я наблюдал вариации задержки до 1 минуты.

Для программного обеспечения, над которым я работаю, такая задержка недопустима.

Что было бы хорошей стратегией для вычисления промежутка времени клиент / сервер?


Последнее: я могу отправлять сообщения обоими способами (клиент на сервер и сервер на клиент)

Это, вероятно, не имеет значения, но технология, лежащая в основе этого, - это .net WCF-клиент, использующий привязку http с некоторым опросом

Ответы [ 2 ]

1 голос
/ 02 марта 2009

Почему вы не можете использовать NTP? Конечно, по умолчанию для ntp устанавливается системное время, но это не обязательно:

$ ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset -0.102597, delay 0.05426
 2 Mar 11:44:36 ntpdate[12239]: adjust time server 91.189.94.4 offset -0.102597 sec
0 голосов
/ 02 марта 2009

Вы можете проверять сервер на регулярной основе, чтобы вычислить задержку. Я не думаю, что вы можете быть действительно близко через Интернет.

...