65.9K
CodeProject 正在变化。 阅读更多。
Home

连接到网络时间服务器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.92/5 (10投票s)

2007 年 3 月 3 日

CPOL

1分钟阅读

viewsIcon

69019

downloadIcon

1556

这篇简单的文章解释了如何连接到网络时间服务器。

引言

本文是对网络时间协议的一个非常简单的介绍。它简要解释了如何将您的应用程序与网络时间服务器的时间同步。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]; 
}
© . All rights reserved.