Ping TimeOut问题

时间:2013-11-26 13:36:35

标签: c# timeout ping

我有以下代码......

 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那样立即回复?

1 个答案:

答案 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;
}