本代码会执行三次ping,并返回三次ping的平均延迟,单位为毫秒,如果网络不通,返回-1。
public static long ICMPPing(string host)
{
long roundtripTime = 0;
try
{
long totalTime = 0;
int timeout = 120;
int echoNum = 3;
Ping pingSender = new Ping();
int succCount = 0;
for (int i = 0; i < echoNum; i++)
{
PingReply reply = pingSender.Send(host, timeout);
if (reply.Status == IPStatus.Success)
{
totalTime += reply.RoundtripTime;
succCount++;
}
}
if (succCount == 0) return -1;
roundtripTime = totalTime / succCount;
}
catch
{
return -1;
}
return roundtripTime;
}