Синхронизировать время с серверами в Интернете
Для синхронизации времени в сетях с переменной латентностью был разработан протокол 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]));
Метки: