在C#中处理ping异常/错误

时间:2016-10-08 12:47:01

标签: c# string exception exception-handling ping

我不确定在开始ping之前是否可以检查,因为程序如何判断它是否是有效的主机名?
问题是Ping();可以返回各种错误消息,我只想确定答案是否是:
  - " Ping请求找不到主机HOSTNAME。请检查姓名,然后重试。"因此,如果主机名根本不存在,则   - 来自"的回复#34;所以,如果电脑打开,
  - "目标主机无法访问。"所以,如果有这样的主机名,但它是离线的,
  - 如果有任何其他错误。

由于某种原因,这对我来说并不是很好。

            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
            }

或者这实际上是在处理所有案例,例如找不到主机名,离线,在线等其他错误?如果知道哪个案例/错误/异常是哪个,那就太棒了。
谢谢!

0 个答案:

没有答案