我有以下代码......
Ping ping = new Ping();
PingReply replay = ping.Send(ipAddress, timeOut* 1000);
我在机器上运行该功能,但IP仍处于关闭状态,并且timeOut设置为约5分钟。我也打开了一个CMD窗口,我写了ping ipaddress -t
虽然计算机仍处于关机状态,但我在CMD窗口和程序中都有时间。
我打开了IP地址的计算机。
CMD窗口立即检测到机器,我在ping响应地址中获取地址,但是我必须等待整个超时到期才能从.NET函数获取地址。
为什么ping不是像CMD那样立即回复?
答案 0 :(得分:1)
所以我决定为此目的编写自己的ping()。
private PingReply ping(int tout,bool waitForSuccess)
{
PingReply replay = null;
Ping ping = new Ping();
Stopwatch stopWatch=new Stopwatch();
stopWatch.Start();
long timeOut=tout*1000;
while (stopWatch.ElapsedMilliseconds < timeOut)
{
replay = ping.Send(m_device.IPAddress,2000);
if((replay.Status == IPStatus.Success) == waitForSuccess)
break;
System.Threading.Thread.Sleep(2000);
}
return replay;
}