Вы должны войти в систему InnerException
, чтобы увидеть, что на самом деле происходит:
catch (PingException ex)
{
Console.WriteLine(ex.InnerException);
ConnectionStatus = "Disconnected-Exception";
}
, который выводит следующий вывод:
System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Dns.InternalGetHostByName(String hostName)
at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
at System.Net.NetworkInformation.Ping.GetAddressAndSend(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
и также не работает для команды ping
(убедившись, что результаты ожидаемые):
PS C:\Users\user> ping https://www.google.com/
Ping request could not find host https://www.google.com/. Please check the name and try again.
Это означает, что хост https://www.google.com/
не разрешает ответы ICMP для HTTPS. Вы можете взглянуть на Можете ли вы получить ответ с HTTPS-сайта с помощью команды Ping? , чтобы получить хорошее объяснение, почему это происходит.
Вы также можете проверить это в System.Net.NetworkInformation.Ping.Send()
документации:
PingException
Исключение возникло при отправка или получение сообщений ICMP. См. Внутреннее исключение для точного исключения, которое было сгенерировано.
Вместо этого попробуйте пропинговать имя хоста www.google.com
:
Ping myPing = new Ping();
String host = "www.google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
string ConnectionStatus;
Ping ping = new Ping();
try
{
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
if (reply.Status == IPStatus.Success)
ConnectionStatus = "Connected";
else
ConnectionStatus = "Disconnected";
}
catch (PingException ex)
{
Console.WriteLine(ex.InnerException);
ConnectionStatus = "Disconnected-Exception";
}
Console.WriteLine(ConnectionStatus);
, который не выводит никаких исключений, и соединение успешно:
Connected