PingException的含义"没有这样的主机是已知的"

时间:2018-06-18 15:19:08

标签: c# .net ping

我编写了一个Windows服务,通过(除其他事项)ping它们(使用Ping.Send(); .NET 4.6.1)监视我们LAN上的设备。对于少数个人电脑(3),我偶尔会#34; (一天/一天?)将从PingException获得Send(<ipaddr>, 5000)InnerException.Message == "No such host is known"。下次执行Send()(约60秒后),它会成功。我使用的是IP地址,而不是名称,所以它不是DNS问题。

我和网络管理员讨论了这个问题,但他们并不相信物理硬件有什么问题。这个错误可能表明还有哪些其他问题?

1 个答案:

答案 0 :(得分:0)

Ping.Send()有各种参数,包括参数类型string,可以是有效的IP地址或有效的主机名。我怀疑您使用其中一个string参数,有时传递无效的IP(额外空间,无效的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...
      }  
}

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