Обработка исключений / ошибок ping в C#

#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. Тайм-аут, почему бы не использовать другие?