连接到网络时间服务器






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];
}