Добавить комментарий

Delphi

Синхронизировать время с серверами в Интернете

Для синхронизации времени в сетях с переменной латентностью был разработан протокол NTP. В пользовательских программах обычно не требуется высокой точности, поэтому используется более простой протокол SNTP.

Сервера точного времени, отвечающие по протоколу NTP поддерживают и SNTP.

Протокол реализован во множестве библиотек для Delphi. 

Например, Indy содержит компонент idSNTP:

 // Настройка
 IdSNTP1.Host := 'time.windows.com'; // сервер точного времени
 IdSNTP1.Port := 123;
 IdSNTP1.ReceiveTimeout := 5000;
 // выведем разницу между локальным временем и данными сервера ntp
 Memo3.Lines.Add(Format('%1.3f', [(Now - IdSNTP1.DateTime)*24*3600]));
 // Попытаемся синхронизировать время и выведем удалось или нет
 Memo3.Lines.Add(BoolToStr(IdSNTP1.SyncTime, true));
 // Повторно выведем разнице между локальным временем и данными сервера ntp
 Memo3.Lines.Add(Format('%1.3f', [(Now - IdSNTP1.DateTime)*24*3600]));
Метки:

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.