示例#1
0
        static void Main(string[] args)
        {
            // query the SNTP server
            NtpPacket response;

            using (var ntp = new NtpClient(Dns.GetHostAddresses("pool.ntp.org")[0]))
                response = ntp.Query();
            // offset = ntp.GetCorrectionOffset();

            Console.WriteLine(response.CorrectionOffset);
        }
示例#2
0
        /// <summary>
        /// Gets the time from the server as needed, based on cache expiration
        /// </summary>
        /// <returns></returns>
        protected override long GetUnixTime()
        {
            if (!TimeExpired()) return (long) (DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference;

            lock (_getTime)
            {
                if (!TimeExpired())
                    return (long) (DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference;

                using (var ntp = new NtpClient(_configuration.Server, _configuration.Port))
                {
                    ntp.Timeout = _configuration.TimeOut;
                    var ntpResponse = ntp.Query();
                    _millisecondsDifference = (long)ntpResponse.CorrectionOffset.TotalMilliseconds;
                }
                ServerOffsetObtained = DateTime.UtcNow;
            }
            return (long)(DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference;
        }
示例#3
0
        static void Main(string[] args)
        {
            var servers = args.Length > 0 ? args : new[] { "pool.ntp.org" };

            foreach (var host in servers)
            {
                Console.WriteLine("Querying {0}...", host);
                try
                {
                    using (var ntp = new NtpClient(Dns.GetHostAddresses(host)[0]))
                    {
                        var packet = ntp.Query();
                        Console.WriteLine();
                        Console.WriteLine("Received {0}B packet", packet.Bytes.Length);
                        Console.WriteLine("-------------------------------------");
                        Console.WriteLine("Correction offset: {0:s'.'FFFFFFF}", packet.CorrectionOffset);
                        Console.WriteLine("Round-trip time:   {0:s'.'FFFFFFF}", packet.RoundTripTime);
                        Console.WriteLine("Origin time:       {0:hh:mm:ss.fff}", packet.OriginTimestamp);
                        Console.WriteLine("Receive time:      {0:hh:mm:ss.fff}", packet.ReceiveTimestamp);
                        Console.WriteLine("Transmit time:     {0:hh:mm:ss.fff}", packet.TransmitTimestamp);
                        Console.WriteLine("Destination time:  {0:hh:mm:ss.fff}", packet.DestinationTimestamp);
                        Console.WriteLine("Protocol version:  {0}", packet.VersionNumber);
                        Console.WriteLine("Protocol mode:     {0}", packet.Mode);
                        Console.WriteLine("Leap second:       {0}", packet.LeapIndicator);
                        Console.WriteLine("Stratum:           {0}", packet.Stratum);
                        Console.WriteLine("Reference ID:      0x{0:x}", packet.ReferenceId);
                        Console.WriteLine("Reference time:    {0:hh:mm:ss.fff}", packet.ReferenceTimestamp);
                        Console.WriteLine("Root delay:        {0}ms", packet.RootDelay.TotalMilliseconds);
                        Console.WriteLine("Root dispersion:   {0}ms", packet.RootDispersion.TotalMilliseconds);
                        Console.WriteLine("Poll interval:     2^{0}s", packet.Poll);
                        Console.WriteLine("Precision:         2^{0}s", packet.Precision);
                        Console.WriteLine();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine();
                    Console.WriteLine("NTP query failed: {0}", ex.Message);
                }
            }
        }
示例#4
0
        /// <summary>
        /// Retrieve the current time from a NTP service
        /// </summary>
        public DateTime retrieveCurrentTime()
        {
            //setTime("10:10");
            //setDate("01.02.2017");

            this.Log("Start retrieving time");

            // perform only one query to get the offset
            TimeSpan offset;

            using (var ntp = new NtpClient(Settings.Default.NTP_Server))
            {
                ntp.Timeout = TimeSpan.FromSeconds(5);
                var ntpResponse = ntp.Query();
                offset = ntpResponse.CorrectionOffset;
            }

            //add UTC offset to achive the locat time
            var UTC_offset = new TimeSpan(Settings.Default.UTC_Offset, 0, 0);

            // use the offset throughout your app
            return(DateTime.UtcNow + offset + UTC_offset);
        }
示例#5
0
        /// <summary>
        /// Gets the time from the server as needed, based on cache expiration
        /// </summary>
        /// <returns></returns>
        protected override long GetUnixTime()
        {
            if (!TimeExpired())
            {
                return((long)(DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference);
            }

            lock (_getTime)
            {
                if (!TimeExpired())
                {
                    return((long)(DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference);
                }

                using (var ntp = new NtpClient(_configuration.Server, _configuration.Port))
                {
                    ntp.Timeout = _configuration.TimeOut;
                    var ntpResponse = ntp.Query();
                    _millisecondsDifference = (long)ntpResponse.CorrectionOffset.TotalMilliseconds;
                }
                ServerOffsetObtained = DateTime.UtcNow;
            }
            return((long)(DateTime.UtcNow - UnixEpoch).TotalMilliseconds + _millisecondsDifference);
        }