Книга: Программирование на языке Ruby
18.2.2. Запрос к официальному серверу времени
18.2.2. Запрос к официальному серверу времени
Как мы и обещали, приведем программу для обращения к NTP-серверу в сети (NTP — Network Time Protocol (синхронизирующий сетевой протокол). Показанный ниже код заимствован с небольшой переработкой у Дэйва Томаса.
require "net/telnet"
timeserver = "www.fakedomain.org"
local = Time.now.strftime("%H:%M:%S")
tn = Net::Telnet.new("Host" => timeserver,
"Port" => "time",
"Timeout" => 60,
"Telnetmode" => false)
msg = tn.recv(4).unpack('N')[0]
# Преобразовать смещение от точки отсчета
remote = Time.at(msg — 2208988800).strftime("%H:%M:%S")
puts "Местное : #{local}"
puts "Удаленное : #{remote}"
Мы устанавливаем соединение и получаем четыре байта. Они представляют 32-разрядное число в сетевом (тупоконечном) порядке байтов. Это число преобразуется в понятную форму, а затем — из смещения от точки отсчета в объект Time
.
Мы не указали имя реального сервера. Дело в том, что его полезность часто зависит от того, где вы находитесь. Кроме того, многие серверы ограничивают доступ, так что для запроса вы должны получить разрешение или хотя бы уведомить владельца. Поисковая машина поможет найти открытый NTP-сервер в радиусе 1000 км от вас.
- 18.2.1. Получение истинно случайных чисел из Web
- 18.2.2. Запрос к официальному серверу времени
- 18.2.3. Взаимодействие с РОР-сервером
- 18.2.4. Отправка почты по протоколу SMTP
- 18.2.5. Взаимодействие с IMAP-сервером
- 18.2.6. Кодирование и декодирование вложений
- 18.2.7. Пример: шлюз между почтой и конференциями
- 18.2.8. Получение Web-страницы с известным URL
- 18.2.9. Библиотека Open-URI
- Улучшенный оптимизатор запросов
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Ограничение времени ожидания для транзакций (Lock timeout)
- Асинхронный сервер и отмена выполняющихся запросов
- 7.12. Объективизация времени
- Квант времени
- 1. Оператор Select – базовый оператор языка структурированных запросов
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- 4. Использование подзапросов
- Запросы на обновление
- Формула времени. Тайм-менеджмент на Outlook 2013