c# - PingException "No such host is known"的含义

标签 c# .net ping

我编写了一个 Windows 服务,它通过(除其他外)对 LAN 上的设备进行 ping 操作(使用 Ping.Send() ;.NET 4.6.1)来监视这些设备。对于少量电脑 (3),我“偶尔”(每天一次?)会得到 PingException来自Send(<ipaddr>, 5000) ,与 InnerException.Message == "No such host is known" 。下次Send()执行(~60秒后),它成功了。我使用的是 IP 地址,而不是名称,因此这不是 DNS 问题。

我与网络管理员讨论了这个问题,但他们不认为物理硬件有任何问题。此错误还表明什么其他问题?

最佳答案

Ping.Send()具有各种参数,其中包括字符串参数类型,可以是有效的 IP 地址或有效的主机名。我怀疑您使用了 string 参数之一,有时传递了无效的 IP(额外的空格、无效的 IP 等...),并且 Send() 方法有条件地解决了该问题您必须传递主机名,因此有关 DNS 的异常(exception)情况。

为什么不使用 IPAddress 类型的参数,而不是发送字符串正如您已经说过的,它应该始终是一个 IP。您可以通过尝试将 string 解析为 IPAddress 来完成此操作,如下所示:

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

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

关于c# - PingException "No such host is known"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912713/

相关文章:

c# - 逐字字符串问题

.net - 在 VB.Net 中进行未经检查的整数加法的最快方法?

ssh - KVM Debian - 禁用 ICMP 重定向接受会使 SSH 和 ping 无法进行

c# - 查看死锁后的堆栈跟踪

c# - 从 Azure Function 中 Ping 服务器

mysql - Galera 集群高 Ping

c# - 如何在不将第一个实体插入 Entity Framework C# 中的数据库的情况下将实体 ID 分配给另一个实体?

c# - Nunit 测试 MVC 站点

c# - 在调用 read() 之前(也在调用 read 之后)访问字段的尝试无效

c# - 这个包含尖括号的符号是什么意思?