.NET Ping()给出错误的超时?

Rya*_*ers 5 .net c# network-programming ping

我有一个循环的脚本,每秒向主机发送一次ping.其目的是测试家庭网络上的无线性能.问题是,我似乎从我的脚本中获得超时,而任一客户端(pingER和pingEE)上的标准"ping -t"都没有这样的超时.事实上,在最后30分钟内没有一次超时,而我的脚本每隔几分钟就收到超时回复.

我的基本脚本如下.在所有情况下,当它确实发生时,我的回复是TimedOut,响应时间为0ms.我的脚本是否导致错误超时?谢谢.

编辑:更新代码以反映最新的更改,仍然具有相同的行为.

while (true)
{
    System.Threading.Thread.Sleep(delay);
    var builder = new StringBuilder();

    hosts.ForEach(h =>
    {
        var buffer = new byte[32];
        var reply = ping.Send(h, 4000, buffer, new PingOptions(600, true));
        var error = reply.Status != IPStatus.Success || reply.RoundtripTime > maxRoundTrip;

        if (verbose || error)
        {
            builder.AppendFormat("{0}: {1} ({2}ms)", h, reply.Status, reply.RoundtripTime);
            builder.Append(Environment.NewLine);

            if (error)
            {
                WriteLog(h, reply);
                SendEmail(h, reply);
            }
        }
    });

    Console.WriteLine(DateTime.Now);
    Console.WriteLine(builder.ToString());
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*ers 2

我可能已经明白了。我使用的是相关机器的 netbios 名称。我猜测每次执行 ping 操作时,都会将往返中的 IP 查找考虑在内并且超时。当我只使用IP时,它工作得很好并且没有超时。

感谢您的意见。