Introduction
This article is a very simple introduction to the Network Time Protocol. It explains briefly how you can synchronize your applications with a time from a Network Time Server. NTP provides a reliable way of synchronizing time on IT networks. NTP is present on virtually all computers and allows systems to synchronize their clocks with a time source over the TCP/IP networks.
On a Windows operating system, you can synchronize your system clock with time.windows.com. Alternatively you can enter a Network Time Server of your choice.
There are Network Time Servers all around the world, some are publicly accessible and are mainly setup in university institutions. Network Time Servers are mainly over UDP listening on port 123. Microsoft's Internet Time server time.windows.com uses UDP on port 123.
The following code connects to www.pogostick.net on port 13. This Network Time Server uses TCP. The server is located in Norway.
try
{
TcpClient NTS = new TcpClient("www.pogostick.net", 13);
if (NTS.Connected)
{
}
}
catch (Exception E)
{
}
Once connected to the Network Time Server, the server will respond with the date and time. The following code sets up a NetworkStream
and a StreamReader
to read data from the server.
NetworkStream ns = NTS.GetStream();
StreamReader sr = new StreamReader(ns);
string Response = sr.ReadLine();
The server will respond with a message like the following:
Sun Mar 3 22:04:24 2007
We can extract the time from the response by using the split method. The following code splits the response from the server and stores the data into an array variable.
static void ProcessResponse()
{
string[] splitRes = Response.Split(' ');
strDate = splitRes[0];
strMonth = splitRes[1];
intDate = int.Parse(splitRes[3]);
strTime = splitRes[4];
strYear = splitRes[5];
}