Rebex



Sample: PocketPC - TimeGetter

Connect get time and (S)NTP server info including stratum.

The sample show:

  • Connect SNTP/NTP server.
  • Get server timestamp.
  • Get protocol version supported by the server.
  • Show server stratum.

C#

Ntp ntp = new Ntp(serverName.Text);

// Since we want to know the highest version the server supports, we  
// must declare the highest ourselves (otherwise it would use  
// compatibility mode). 
ntp.VersionNumber = 4;

// Even an emulator takes a couple of seconds to contact its host 
// computer - let's take some reserve. 
ntp.Timeout = 10000;

UpdateStatus("Sending time request...");
NtpResponse response = ntp.GetTime();
NtpPacket packet = response.Packet;
UpdateStatus("");

protocolVersion.Text = packet.VersionNumber.ToString();
stratum.Text = packet.Stratum.ToString();

txtReport.Text = string.Format(
	"We sent the request to the server at {0} UTC and recieved its response at {1} UTC.\r\n\r\n", 
	packet.OriginateTimestamp, 
	packet.DestinationTimestamp
);

txtReport.Text += string.Format(
	"The server at {0} has stratum {1} and runs NTP version {2}.\r\n\r\n", 
	serverName.Text, 
	packet.Stratum, 
	packet.VersionNumber
);

txtReport.Text += string.Format(
	"It received our request at {0} UTC and responded to it at {1} UTC.\r\n\r\n", 
	packet.ReceiveTimestamp, 
	packet.TransmitTimestamp
);

DateTime current = DateTime.Now;

DateTime exact = current + response.TimeOffset.ToTimeSpan();
txtReport.Text += string.Format(
	"The current local time is {0} and it should be adjusted to {1}.", 
	current, 
	exact
);

VB.NET

Dim ntpClient As Ntp = New Ntp(serverName.Text)

' Since we want to know the highest version the server supports, we  
' must declare the highest ourselves (otherwise it would use  
' compatibility mode). 
ntpClient.VersionNumber = 4

' Even an emulator takes a couple of seconds to contact its host 
' computer - let's take some reserve. 
ntpClient.Timeout = 10000

UpdateStatus("Sending time request...")
Dim response As NtpResponse = ntpClient.GetTime()
Dim packet As NtpPacket = response.Packet
UpdateStatus("")

protocolVersion.Text = packet.VersionNumber.ToString()
stratum.Text = packet.Stratum.ToString()

txtReport.Text = String.Format( _
    "We sent the request to the server at {0} UTC and recieved its response at {1} UTC." & vbCrLf & vbCrLf, _
    packet.OriginateTimestamp, _
    packet.DestinationTimestamp _
)

txtReport.Text += String.Format( _
    "The server at {0} has stratum {1} and runs NTP version {2}." & vbCrLf & vbCrLf, _
    serverName.Text, _
    packet.Stratum, _
    packet.VersionNumber _
)

txtReport.Text += String.Format( _
    "It received our request at {0} UTC and responded to it at {1} UTC." & vbCrLf & vbCrLf, _
    packet.ReceiveTimestamp, _
    packet.TransmitTimestamp _
)

Dim current As DateTime = DateTime.Now
Dim exact As DateTime = current.Add(response.TimeOffset.ToTimeSpan())
txtReport.Text += String.Format( _
    "The current local time is {0} and it should be adjusted to {1}.", _
    current, _
    exact _
)

	

See also: