Module: Net::NTP
- Defined in:
- lib/net/ntp/ntp.rb,
lib/net/ntp/version.rb
Defined Under Namespace
Classes: Response
Constant Summary collapse
- TIMEOUT =
:nodoc:
60
- NTP_ADJ =
:nodoc:
2208988800
- NTP_FIELDS =
[ :byte1, :stratum, :poll, :precision, :delay, :delay_fb, :disp, :disp_fb, :ident, :ref_time, :ref_time_fb, :org_time, :org_time_fb, :recv_time, :recv_time_fb, :trans_time, :trans_time_fb ]
- MODE =
{ 0 => 'reserved', 1 => 'symmetric active', 2 => 'symmetric passive', 3 => 'client', 4 => 'server', 5 => 'broadcast', 6 => 'reserved for NTP control message', 7 => 'reserved for private use' }
- STRATUM =
{ 0 => 'unspecified or unavailable', 1 => 'primary reference (e.g., radio clock)' }
- REFERENCE_CLOCK_IDENTIFIER =
{ 'LOCL' => 'uncalibrated local clock used as a primary reference for a subnet without external means of synchronization', 'PPS' => 'atomic clock or other pulse-per-second source individually calibrated to national standards', 'ACTS' => 'NIST dialup modem service', 'USNO' => 'USNO modem service', 'PTB' => 'PTB (Germany) modem service', 'TDF' => 'Allouis (France) Radio 164 kHz', 'DCF' => 'Mainflingen (Germany) Radio 77.5 kHz', 'MSF' => 'Rugby (UK) Radio 60 kHz', 'WWV' => 'Ft. Collins (US) Radio 2.5, 5, 10, 15, 20 MHz', 'WWVB' => 'Boulder (US) Radio 60 kHz', 'WWVH' => 'Kaui Hawaii (US) Radio 2.5, 5, 10, 15 MHz', 'CHU' => 'Ottawa (Canada) Radio 3330, 7335, 14670 kHz', 'LORC' => 'LORAN-C radionavigation system', 'OMEG' => 'OMEGA radionavigation system', 'GPS' => 'Global Positioning Service', 'GOES' => 'Geostationary Orbit Environment Satellite' }
- LEAP_INDICATOR =
{ 0 => 'no warning', 1 => 'last minute has 61 seconds', 2 => 'last minute has 59 seconds)', 3 => 'alarm condition (clock not synchronized)' }
- VERSION =
'2.1.3'
Class Method Summary collapse
-
.get(host = "pool.ntp.org", port = "ntp", timeout = TIMEOUT) ⇒ Object
Sends an NTP datagram to the specified NTP server and returns a hash based upon RFC1305 and RFC2030.
Class Method Details
.get(host = "pool.ntp.org", port = "ntp", timeout = TIMEOUT) ⇒ Object
Sends an NTP datagram to the specified NTP server and returns a hash based upon RFC1305 and RFC2030.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/net/ntp/ntp.rb', line 66 def self.get(host="pool.ntp.org", port="ntp", timeout=TIMEOUT) sock = UDPSocket.new sock.connect(host, port) client_localtime = Time.now.to_f client_adj_localtime = client_localtime + NTP_ADJ client_frac_localtime = frac2bin(client_adj_localtime) ntp_msg = (['00011011']+Array.new(12, 0)+[client_localtime, client_frac_localtime.to_s]).pack("B8 C3 N10 B32") sock.print ntp_msg sock.flush read, write, error = IO.select [sock], nil, nil, timeout if read.nil? # For backwards compatibility we throw a Timeout error, even # though the timeout is being controlled by select() raise Timeout::Error else client_time_receive = Time.now.to_f data, _ = sock.recvfrom(960) Response.new(data, client_time_receive) end end |