#c# #string #exception #exception-handling #ping
#c# #строка #исключение #ping
Вопрос:
Я не уверен, можно ли проверить перед началом пинга, поскольку как программа может определить, является ли это допустимым именем хоста или нет?
Проблема в том, что Ping(); может возвращаться с различными сообщениями об ошибках, и я только хочу определить, является ли ответ либо:
— «Запрос Ping не смог найти ИМЯ хоста хоста. Пожалуйста, проверьте имя и повторите попытку «. Итак, если имя хоста вообще не существует,
— есть «Ответ от», поэтому, если компьютер включен,
— «Хост назначения недоступен». так что, если есть такое имя хоста, но оно отключено,
— если есть какая-либо другая ошибка.
По какой-то причине это работает не очень хорошо для меня.
try
{
var address = Dns.GetHostEntry(inputText.Text).AddressList.First();
string returnMessage = string.Empty;
PingOptions pingOptions = new PingOptions(128, true);
Ping ping = new Ping();
byte[] buffer = new byte[32];
for (int i = 0; i < 1; i )
{
try
{
PingReply pingReply = ping.Send(address, 1000, buffer, pingOptions);
if (!(pingReply == null))
{
switch (pingReply.Status)
{
break;
case IPStatus.TimedOut:
returnMessage = "Connection has timed out...";
break;
default:
returnMessage = string.Format("Ping failed: {0}", pingReply.Status.ToString());
break;
}
}
else
returnMessage = "Connection failed for an unknown reason...";
}
catch (PingException ex)
{
returnMessage = string.Format("Connection Error: {0}", ex.Message);
}
catch (SocketException ex)
{
returnMessage = string.Format("Connection Error: {0}", ex.Message);
}
}
}
catch (ArgumentNullException f)
{
//errormessage here
}
catch (Exception f)
{
//errormessage here
}
Или это на самом деле обрабатывает все случаи, такие как имя хоста не найдено, офлайн, онлайн, другие ошибки? Было бы просто здорово узнать, является ли какой случай / ошибка / исключение каким.
Спасибо!
Комментарии:
1. Есть ли какая-то невидимая сила, которая мешает вам читать документацию? msdn.microsoft.com/en-us/library /…
2. у вас уже есть IPStatus. Тайм-аут, почему бы не использовать другие?