Каков наилучший способ синхронизации компьютерного времени с сервером времени в Интернете? - PullRequest
6 голосов
/ 17 августа 2010

Мне нужно получить текущее время с одного из интернет-серверов времени в моем настольном приложении.Я предполагаю, что мне нужно что-то вроде строки запроса и регулярного выражения, чтобы получить время с любого сайта, который хочет пользователь (может быть с несколькими предопределенными сайтами).

Или, может быть, существуют какие-то бесплатные библиотеки?

Спасибо.

Ответы [ 5 ]

7 голосов
/ 17 августа 2010

Это то, для чего был создан Сетевой протокол времени . Но это, вероятно, лучше всего оставить в вашей операционной системе, чтобы вы не столкнулись с дуэльными приложениями, использующими разные не совсем синхронизированные серверы.

См. Заголовки в приведенной выше ссылке для реализаций UNIX и Windows.

2 голосов
/ 17 августа 2010

Существуют спецификации бесплатных библиотек и для получения времени и формата, в котором вы его получаете (поэтому RE обычно не нужны). Ваш выбор зависит от уровня точности / точности, которую вы хотите.

RFC 868 дает время для секунды, что вполне достаточно для целей многих людей. Если это достаточно хорошо, то это много проще в реализации, чем другие, перечисленные ниже.
RFC 5905 определяет протокол сетевого времени. Пока вы только хотите получить время, а не предоставлять его кому-либо еще, NTP, вероятно, излишне.
RFC 4330 определяет SNTP (Simple NTP), который является упрощенной версией NTP для компьютеров, которые действуют как «конечные узлы» - то есть они получают время из другого места, но ничто другое не извлекает время из них.

Проект NTP имеет бесплатные библиотеки NTP для ряда систем.

1 голос
/ 17 августа 2010

Это похоже на то, что операционная система должна делать самостоятельно ...

В Интернете существует протокол, называемый NTP, который возвращает время с серверов времени.

Возможно, вы захотите попробоватьдля библиотеки / класса, которые могут использовать NTP для получения времени для вас.

Или вы можете попробовать поискать исходный код ntpclient .

0 голосов
/ 17 августа 2010

Может быть, вы можете взглянуть на этот код и получить вдохновение:

http://web.abnormal.com/~thogard/ntp/ntpdate.c

0 голосов
/ 17 августа 2010

Обычно большинство операционных систем встраивают такую ​​функциональность.

Windows и Linux могут синхронизироваться с NTP серверами.

Если вы действительно хотите позволить пользователю изменить свой часовой пояс, вам следует искать API для конкретных ОС вместо того, чтобы напрямую связываться с серверами времени и затем изменять системное время. Это было бы способ лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...