Windows Phone NTP Client
I've got plans for an application in which I need to know with certainty the current time. So I don't want to trust the time as reported by the user's device. Instead I need to retrieve the time from a server. I made a NTP (Network Time Protocol) client for retrieving this information. This is something that couldn't be done on Windows Phone 7 prior to Mango. But with the fall update (Mango) access to sockets is granted.
The use of the client is pretty simple. At minimum, one can create the client with the default constructor, subscribe to the ReceivedTime
event, and call the RequestTime
method to initiate a request. The ReceivedTime
event may be called on a thread other than the UI thread so remember to use a dispatcher when making UI updates.

This is an example of a client using the code to display both the system time and the network time.
public partial class MainPage : PhoneApplicationPage
{
private NtpClient _ntpClient;
public MainPage()
{
InitializeComponent();
_ntpClient = new NtpClient();
_ntpClient.TimeReceived += new EventHandler<NtpClient.TimeReceivedEventArgs>
(_ntpClient_TimeReceived);
}
void _ntpClient_TimeReceived(object sender, NtpClient.TimeReceivedEventArgs e)
{
this.Dispatcher.BeginInvoke(() =>
{
txtCurrentTime.Text =
e.CurrentTime.ToLongTimeString();
txtSystemTime.Text =
DateTime.Now.ToUniversalTime().
ToLongTimeString();
});
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
}
private void UpdateTimeButton_Click(object sender, RoutedEventArgs e)
{
_ntpClient.RequestTime();
}
}
发表评论
b8sk8O Hey, thanks for the blog article.Really looking forward to read more.
mmFO2I Enjoyed every bit of your blog.Really thank you! Cool.
dsolu5 Major thanks for the blog article.Thanks Again. Want more.
99d1bk I appreciate you sharing this blog post.Much thanks again. Want more.