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); }
/// <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; }
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); } } }
/// <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); }
/// <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); }