If you are looking for to ping a remote machine and you want to record the state along with status and return time, below example can help you.
private void Ping_Click(object sender, EventArgs e)
{
List domains = new List();
domains.Add("www.bing.com");
domains.Add("www.yahoo.com");
domains.Add("jebarson.info");
foreach (string domain in domains)
{
Ping pinger = new Ping();
UserToken token = new UserToken() { Destination = domain, InitiatedTime = DateTime.Now };
pinger.PingCompleted += new PingCompletedEventHandler(PingCompleted);
pinger.SendAsync(domain, token);
}
}
private void PingCompleted(object sender, PingCompletedEventArgs e)
{
UserToken token = (UserToken)e.UserState;
Debug.Assert(true, string.Format("Reply from {0} with the status {1}", token.Destination, e.Reply.Status));
}
public class UserToken
{
public string Destination { get; set; }
public DateTime InitiatedTime { get; set; }
}
Always remember that the property e.Reply.Address will show up the correct destination IP address only if it is reachable. I would suggest you to go through the msdn urls http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.pingcompleted.aspx and http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.sendasync.aspx which will give you more insight.
Ping remote machines using .net