连接到网络时间服务器






2.92/5 (10投票s)
这篇简单的文章解释了如何连接到网络时间服务器。
引言
本文是对网络时间协议的一个非常简单的介绍。它简要解释了如何将您的应用程序与网络时间服务器的时间同步。NTP 提供了一种可靠的方式来同步 IT 网络上的时间。NTP 几乎存在于所有计算机上,并允许系统通过 TCP/IP 网络与时间源同步其时钟。
在 Windows 操作系统上,您可以将系统时钟与 time.windows.com 同步。或者,您可以输入您选择的网络时间服务器。
世界各地都有网络时间服务器,其中一些是公开可访问的,主要设置在大学机构中。网络时间服务器主要通过 UDP 监听 123 端口。微软的 Internet Time 服务器 time.windows.com 使用 UDP 在 123 端口上工作。
以下代码连接到 www.pogostick.net 的 13 端口。该网络时间服务器使用 TCP。服务器位于挪威。
try 
{ 
    TcpClient NTS = new TcpClient("www.pogostick.net", 13); 
    if (NTS.Connected) 
    { 
        //Connected 
    } 
} 
catch (Exception E) 
{ 
    //Not Connected 
}
连接到网络时间服务器后,服务器将响应日期和时间。以下代码设置一个 NetworkStream 和一个 StreamReader 来读取服务器上的数据。
NetworkStream ns = NTS.GetStream(); 
StreamReader sr = new StreamReader(ns); 
string Response = sr.ReadLine();
服务器将响应如下消息
Sun Mar 3 22:04:24 2007
我们可以使用 split 方法从响应中提取时间。以下代码将服务器的响应拆分并将其存储到数组变量中。
static void ProcessResponse() 
{ 
    string[] splitRes = Response.Split(' '); 
    strDate = splitRes[0]; 
    strMonth = splitRes[1]; 
    intDate = int.Parse(splitRes[3]); 
    strTime = splitRes[4]; 
    strYear = splitRes[5]; 
}

