|
Вопрос # 3 435/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Помогите пожалуйста написать функцию получения точного времени из интернета (http://www.direct-time.ru/index.php?id=1). Заранее спасибо!
 |
Вопрос задал: Free (статус: Посетитель)
Вопрос отправлен: 23 ноября 2009, 12:51
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Pasha!
На вкладках с Indy ищем компонент TIdDayTime. в свойство Host вписываем NTP сервер, который находиться гуглом или к примеру здесь http://support.ntp.org/bin/view/Servers/NTPPoolServers Можно спросить у вашего провайдера или вуза.
также ставим кнопку и метку (TLabel). пишем для кнопки код
IdDayTime1.Connect;
Label1.Caption := IdDayTime1.DayTimeStr;
IdDayTime1.Disconnect;
Запускаем, жмем, наслаждаемся. Можно аккуратно этот код завернуть в таймер:)
Если же хочется уметь правильно синхронизировать время то тут поможет соседний компонент TIdTime
для него пишем где то такой код
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTime1.Host := 'time.nist.gov';//это сервер, надо выбирать подходящий.
try
IdTime1.SyncTime ;
finally
IdTime1.Disconnect;
end;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 24 ноября 2009, 14:56
Оценка за ответ: 3
Комментарий к оценке: Спасибо!
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 24 ноября 2009, 15:24; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 23 ноября 2009, 13:40 [#1]:
а надо именно с этого сайта? хорошее качество по любому не получиться, всё таки задержки в канале...
В целом. для получения точного времени есть протокол NTP. Этот прокол умеет обходить задержки в сети и другие проблемы.
В Indy даже есть компоненты
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Free (статус: Посетитель), 23 ноября 2009, 17:24 [#2]:
Нет, время можно узнавать и из другого сайта, главное чтобы время было как можно точнее (до секунд, либо миллисекунд), хотя насколько я знаю - максимальная точность - до секунд.
|
|
Вадим К (статус: Академик), 23 ноября 2009, 17:37 [#3]:
с помощью NTP протокола можно получать до долей секунд даже на самых плохих каналах.
Почему?
- клиент делает запросы и измеряет время прихода ответа, потом корректирует.
- клиент делает несколько запросов.
- много серверов, и при правильном подходе можно с несколько серверов брать время.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Free (статус: Посетитель), 24 ноября 2009, 14:36 [#4]:
Опишите пожалуйста, как это реализовать.
|
|
Вадим К (статус: Академик), 24 ноября 2009, 15:24 [#5]:
Что за люди пошли??? узнаешь, что им надо, даешь решение, а они тройку ставят...
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|