PingException "No such host is known" 的含义

Meaning of PingException "No such host is known"

我写了一个 Windows 服务,它通过(除其他外)对我们 LAN 上的设备执行 ping 操作(使用 Ping.Send();.NET 4.6.1)来监视它们。对于少量 PC (3),我 "occasionally" (once/day?) 将从 Send(<ipaddr>, 5000) 得到 PingExceptionInnerException.Message == "No such host is known"。下次执行 Send() 时(约 60 秒后),它会成功。我使用的是 IP 地址,而不是名称,所以这不是 DNS 问题。

我与网络管理员谈过这个问题,但他们认为物理硬件没有任何问题。此错误可能表明还有哪些其他问题?

Ping.Send() 有各种参数,其中包括 string 参数类型,可以是有效的 IP 地址或有效的主机名。我怀疑您使用 string 参数之一并且有时传递无效 IP(额外的 space、无效 IP 等...)和 Send() 方法有条件地解析您必须传递主机名,因此有关 DNS 的例外情况。

为什么不使用 IPAddress 类型的参数而不是发送 string,因为您已经声明它应该始终是 IP。您可以通过尝试将 string 解析为 IPAddress 来执行此操作,如下所示:

if (IPAddress.TryParse("**IP String**", out var ip))
{
      using (var pong = new Ping())
      {
         pong.Send(ip);
         //Etc...
      }  
}

请注意,无论以何种方式查看,您仍然需要修复无效数据。