如果需要很多时间,请跳到下一次迭代 c#

Skip to the next iteration if it takes to much time c#

我想从 192.168.1.1 ping 到 192.168.1.255

所以我用

FOR(i=1;i<=255;i++)

 //each time, I test the IP address by pinging it with the following code

try {

 PingReply reply = pinger.Send(AdresaIp);
 pingable = reply.Status == IPStatus.Success;

}

 catch (PingException)

 {

  // Discard PingExceptions and return false;

 }

我遇到的问题在:

PingReply reply = pinger.Send(AdresaIp);

pingable = reply.Status == IPStatus.Success;

当 ping 成功时,上面的两行执行时间为 2 毫秒,但当它失败时( 会发生多次)大约需要 3 秒, 是巨大的如果我 ping 255 个 IP。

所以我想通过以下方式实现一个定时器:

    if (timer > 1 second) continue; 
    //if it takes more than 1 second for the current iteration jump to the next 

迭代。

我尝试了 System.Diagnostics.Stopwatch.StartNew() ,但对我不起作用,因为它在测试 ping 后给了我时间。 我需要一些允许我在 ping 测试工作时进行检查的东西,所以当它达到 1 秒时我可以使用 CONTINUE 命令。

谢谢,

弗拉德

您可以直接使用 Ping.Send Method (IPAddress, Int32) .第二个参数是超时:

timeout

Type: System.Int32

An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.