代码之家  ›  专栏  ›  技术社区  ›  Brie

pingexception“不知道这样的主机”的含义

  •  -1
  • Brie  · 技术社区  · 8 年前

    我写了一个windows服务,通过ping(使用 Ping.Send() ;.net 4.6.1)。对于少量PC(3),我“偶尔”(一次/天?)将得到一个 PingException Send(<ipaddr>, 5000) InnerException.Message == "No such host is known" . 下一次 Send() 执行(大约60秒后),它成功。我使用的是IP地址,而不是名称,所以这不是DNS问题。

    我和网络管理员谈过这个问题,但他们不认为物理硬件有什么问题。这个错误还说明了什么问题?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Kitson88    8 年前

    Ping.Send() 具有各种参数,其中包括 string 可以是有效的IP地址或有效的主机名。我怀疑你用了 一串 参数,有时传递无效的IP(额外空间、无效的IP等)和 Send() 方法有条件地解析您必须传递主机名,因此出现有关DNS的异常。

    而不是发送 一串 ,为什么不使用类型的参数 IPAddress 正如你已经说过的,它应该始终是一个IP。您可以通过尝试分析 一串 变成一个 IP地址 如下图所示:

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

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