Reputation: 2359
I wrote a Windows Service which monitors devices on our LAN by (among other things) pinging them (using Ping.Send()
; .NET 4.6.1). For a small number of PCs (3), I "occasionally" (once/day?) will get a PingException
from Send(<ipaddr>, 5000)
, with InnerException.Message == "No such host is known"
. The next time the Send()
is executed (~60 seconds later), it succeeds. I am using an IP address, as opposed to a name, so it's not a DNS issue.
I talked to the network admins about this issue, but they don't believe anything is wrong with the physical hardware. What other problems could this error be indicating?
Upvotes: 3
Views: 4479
Reputation: 2940
Ping.Send()
has various parameters which includes a parameter type of string
than can either be a valid IP address or valid host-name. I suspect that your using one of the string
parameters and sometimes passing an invalid IP (extra space, invalid IP etc...) and the Send()
method conditionally resolves that you must be passing a host-name hence the exception regarding DNS.
Rather than send a string
, why not utilize the parameter of type IPAddress
as you've already stated that it should always be an IP. You can do this by attempting to parse the string
into an IPAddress
as shown below:
if (IPAddress.TryParse("**IP String**", out var ip))
{
using (var pong = new Ping())
{
pong.Send(ip);
//Etc...
}
}
Note that you will still need to fix your invalid data whichever way you look at it.
Upvotes: 3