我编写了一个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问题。
我和网络管理员讨论了这个问题,但他们并不相信物理硬件有什么问题。这个错误可能表明还有哪些其他问题?
答案 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...
}
}
请注意,无论您以何种方式查看,您仍需要修复无效数据。