NTP服务器推荐
NTP记录:
欢迎使用时间服务器:cn.ntp.org.cn
❤中国地区免费提供NTP服务❤
配置时间服务器请使用域名,避免IP地址变更影响时间同步
具体详细参考访问网站:www.ntp.org.cn
国家授时中心 网络授时服务器的域名为“ntp.ntsc.ac.cn”
NTP服务器列表:
区域[zone] 域名[Domain]
中国[China] cn.ntp.org.cn
其它NTP服务器列表:
中国教育网 edu.ntp.org.cn
中国香港 hk.ntp.org.cn
中国台湾 tw.ntp.org.cn
日本 jp.ntp.org.cn
韩国 kr.ntp.org.cn
新加坡 sgp.ntp.org.cn
美国 us.ntp.org.cn
德国 de.ntp.org.cn
印度尼西亚 ina.ntp.org.cn
代码参考
参考一(根据这个实现了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| static DateTime GetDate() { string ntpServer = "ntp.aliyun.com"; int ntpPort = 123;
using (Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { try { udpClient.Connect(ntpServer, ntpPort);
byte[] requestData = new byte[48]; requestData[0] = 0x1B;
udpClient.Send(requestData);
byte[] responseData = new byte[48]; int bytesRead = udpClient.Receive(responseData);
if (bytesRead == 48) { ulong intPart = BitConverter.ToUInt32(responseData.Skip(40).Take(4).Reverse().ToArray(), 0); ulong fracPart = BitConverter.ToUInt32(responseData.Skip(44).Take(4).Reverse().ToArray(), 0); double fracSeconds = (fracPart / (double)uint.MaxValue) / (double)uint.MaxValue;
DateTime networkDateTime = DateTimeOffset.FromUnixTimeSeconds((long)(intPart - 2208988800UL)).AddSeconds(fracSeconds).ToUniversalTime().LocalDateTime;
return networkDateTime;
} } catch (Exception) { } return DateTime.MinValue; } }
|
参考二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| 需要命名空间加入 using System.Net; using System.Net.Sockets; private void buttonTest_Click(object sender, EventArgs e) { string str; DateTime Ntp; str = Ntp.ToString("yyyy-MM-dd HH:mm:ss"); string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); MessageBox.Show(str + nowStr , "提示"); } public static DateTime GetNetworkTime() { const string ntpServer = "time.windows.com"; var ntpData = new byte[48]; ntpData[0] = 0x1B; var addresses = Dns.GetHostEntry(ntpServer).AddressList; var ipEndPoint = new IPEndPoint(addresses[0], 123); using(var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { socket.Connect(ipEndPoint); socket.ReceiveTimeout = 3000; socket.Send(ntpData); socket.Receive(ntpData); socket.Close(); } const byte serverReplyTime = 40; ulong intPart = BitConverter.ToUInt32(ntpData, serverReplyTime); ulong fractPart = BitConverter.ToUInt32(ntpData, serverReplyTime + 4); intPart = SwapEndianness(intPart); fractPart = SwapEndianness(fractPart); var milliseconds = (intPart * 1000) + ((fractPart * 1000) / 0x100000000L); var networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddMilliseconds((long)milliseconds); return networkDateTime.ToLocalTime(); }
static uint SwapEndianness(ulong x) { return (uint) (((x & 0x000000ff) << 24) + ((x & 0x0000ff00) << 8) + ((x & 0x00ff0000) >> 8) + ((x & 0xff000000) >> 24)); }
|
相关链接(侵删)
- 使用C#查询NTP服务器
- C# 获取网络时间 使用 NTP
- NTP服务器推荐-国内时间服务器(实时更新2021.10)
=================我是分割线=================
欢迎到公众号来唠嗑: