C# SNTP Client

Environment: Visual Studio.NET Beta 1

Though not obvious, time synchronization is sometimes important. The best example is the Kerberos authentication protocol, which requires the resources to be synchronized within minutes or even seconds, but there are other situations as well. The Network Time Protocol (NTP) and its simplified form (SNTP) are widely used to synchronize network resources, due to their simplicity and effectiveness. There are many programs available that synchronize your PC's clock with that of a time server. Dimension 4 is my favorite.

In case you need time synchronization embedded into your software, here is the C# alternative. It's simple, fast and integrates seamlessly with the .NET platform. There is a Java implementation of a NTP client by Michel Van den Bergh, but I don't have the URL anymore. If Michel (or anyone else that knows it) reads this and emails me, then I'll update the article.

There are several time severs on the Internet and the list below contains those operated by NIST. If you need more, you can probably find a few more using any standard Internet search engine.

Name IP Address Location
time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland
time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland
time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado
time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado
time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado
utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder
time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado
time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington
nist1.datum.com 209.0.72.7 Datum, San Jose, California
nist1.dc.certifiedtime.com 216.200.93.8 Abovnet, Virginia
nist1.nyc.certifiedtime.com 208.184.49.9 Abovnet, New York City
nist1.sjc.certifiedtime.com 208.185.146.41 Abovnet, San Jose, California

The server time.nist.gov yields the following results:

The NTPClient class is simply to use. Follow the example below:

NTPClient client;
try 
{
 client = new NTPClient("time.nist.gov");
 client.Connect();
}
catch(Exception e)
{
 Console.WriteLine("ERROR: {0}", e.Message);
 return;
}
Console.Write(client.ToString());

Downloads

Download source - 4 Kb
Download demo project - 7 Kb


Comments

  • utc time

    Posted by arvind on 03/15/2013 08:26am

    hello, thanks for the effort. is there a method for GMT time.

    Reply
  • Latest version...

    Posted by scamurra on 09/22/2010 04:35pm

    Hello, How can I get a version that will compile in .NET 2 or 3.5? Thanks

    Reply
  • Timing Accuracy Issue

    Posted by ppledge on 03/25/2008 09:15am

    Nice Article, excellent class. I am concerned however that you use the DateTime for time stamping incoming messages. Although the DateTime class has room and drags digits out to the nanosecond range, it is only updated by windows every 10-15 milliseconds or so (easy to check out, get the time in a for loop and output it to a file or display, you will see that it doesn't change). In order to get real millisecond accuracy, you need someting like a performance timer synchronized to the windows clock. Other then that, it is excellent. p

    Reply
  • Can't compile demo project...

    Posted by Legacy on 06/11/2003 12:00am

    Originally posted by: xaero

    I Can't compile your demo project.

    Reply
  • Java Version

    Posted by Legacy on 03/09/2003 12:00am

    Originally posted by: Damian Penney

    Found the Van Den Bergh Java implementation at http://alpha.luc.ac.be/cgi-bin/Research/Algebra/java.cgi

    Reply
  • Please add project in VS6.0, too

    Posted by Legacy on 11/02/2001 12:00am

    Originally posted by: MartinBi


    Hi,
    I would like to use you class in Visual Studio 6.0,
    but you add only VS7.0 projects.
    Please correct this problem.

    Thank you
    Martin, Poland

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: May 18, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT While the idea of using facial and or gesture recognitions to create a modern, intuitive game seems attractive, some developers may want to leverage Unity 3D as a way to accelerate their development. There are many different ways in which Intel and Unity Technologies have been working together to helps speed the develop of games with the Intel® RealSense™ SDK (Software Developer Kit), so come hear from a panel of experts on what we've done …

  • You may not realize the complexity you could be creating when developing mobile apps – many companies don't initially. You could be doubling your IT costs for development and delivery; not to mention, risking sales, productivity and brand satisfaction. Read this IBM-commissioned Forrester Study to understand the key cost drivers of mobile app delivery -- for both customer-facing and enterprise applications. Find out how you could lower costs and increase success with the right strategy and investment.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date