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