The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
SYNOPSIS

      use strict;
      use warnings;
      use POE qw(Component::Client::NTP);
      use Data::Dumper;
    
      my $host = shift or die "Please specify a host name to query\n";
    
      POE::Session->create(
        package_states => [
                main => [qw(_start _response)],
        ],
      );
    
      $poe_kernel->run();
      exit 0;
    
      sub _start {
        POE::Component::Client::NTP->get_ntp_response(
           host => $host,
           event => '_response',
        );
        return;
      }
    
      sub _response {
        my $packet = $_[ARG0];
        print Dumper( $packet );
        return;
      }

DESCRIPTION

    POE::Component::Client::NTP is a POE component that provides Network
    Time Protocol (NTP) client services to other POE sessions and
    components.

    NTP is a protocol for synchronising the clocks of computer systems over
    data networks and is described in RFC 1305 and RFC 2030.

    The code in this module is derived from Net::NTP by James G. Willmore

CONSTRUCTOR

    get_ntp_response

      Takes a number of options, only those marked as mandatory are
      required:

        'event', the event to emit when completed, mandatory;
        'session', provide an alternative session to send the resultant event to;
        'host', the name/address of the NTP server to query, default is 'localhost';
        'port', the UDP port to send the query to, default is 123;
        'timeout', the number of seconds to wait for a response, default is 60 seconds;
        'context', any reference data you wish to receive in the response event;

      The session parameter is only required if you wish the output event
      to go to a different session than the calling session, or if you have
      spawned the poco outside of a session.

OUTPUT EVENT

    This is generated by the poco. ARG0 will be a hash reference with the
    following keys:

      'response', this will be a HASHREF on success;
      'host', the host string that was passed to the constructor;
      'error', on failure this will be defined, with an error string;
      'context', whatever was passed to the constructor;

    The response hashref will contain various parts of the NTP response
    packet as outlined in RFC1305. Like Net::NTP some of the data will be
    normalised/humanised, such as timestamps are in epoch, NOT hexadecimal.

    Hexadecimal timestamps are available for Reference, Originate and
    Transmit as hex_ref_time, hex_org_time and hex_trans_time,
    respectively.

    An example:

       'Version Number' => 3,
       'Mode' => 4,
       'Stratum' => 3,
       'Poll Interval' => '3.0000',
       'Reference Clock Identifier' => '46.254.216.9'
       'Precision' => -21,
       'Root Delay' => '0.0540924072265625',
       'Delay' => '0.01513',
       'Leap Indicator' => 0,
       'Root Dispersion' => '0.0000',
       'Originate Timestamp' => '1423758184.59018',
       'Transmit Timestamp' => '1423758184.17864',
       'Receive Timestamp' => '1423758184.17854',
       'Reference Timestamp' => '1423757055.50512',
       'Offset' => '-0.00148022174835205',
       'hex_org_time' => 'd88751e8.232d70e5',
       'hex_trans_time' => 'd88751e8.aa5e272',
       'hex_ref_time' => 'd8874d7f.1e1b7956',

SEE ALSO

    Net::NTP

    POE

    http://www.faqs.org/rfcs/rfc1305.html

    http://www.faqs.org/rfcs/rfc2030.html