我写了一个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问题。
Ping.Send()
PingException
Send(<ipaddr>, 5000)
InnerException.Message == "No such host is known"
Send()
我和网络管理员谈过这个问题,但他们不认为物理硬件有什么问题。这个错误还说明了什么问题?
Ping.Send() 具有各种参数,其中包括 string 可以是有效的IP地址或有效的主机名。我怀疑你用了 一串 参数,有时传递无效的IP(额外空间、无效的IP等)和 Send() 方法有条件地解析您必须传递主机名,因此出现有关DNS的异常。
string
一串
而不是发送 一串 ,为什么不使用类型的参数 IPAddress 正如你已经说过的,它应该始终是一个IP。您可以通过尝试分析 一串 变成一个 IP地址 如下图所示:
IPAddress
IP地址
if (IPAddress.TryParse("**IP String**", out var ip)) { using (var pong = new Ping()) { pong.Send(ip); //Etc... } }
请注意,无论您以何种方式查看无效数据,您仍需要对其进行修复。