Xamarin INetAddress.GetByName始终抛出异常

时间:2014-11-25 17:12:51

标签: c# xamarin xamarin.android inetaddress

我试图使用以下代码获取INetAddress:

try
{
  var address = InetAddress.GetByName ("google.com");
  System.Diagnostics.Debug.WriteLine (address);
}
catch (Java.Net.UnknownHostException)
{
  System.Diagnostics.Debug.WriteLine ("not working");
}

但它始终打印"不工作"。我查了一下,我的网络连接很好。我不知道为什么会这样。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我可以使用AsyncTask解决此问题。

这是我的实现

    public class ConnectionCheckAsyncTask : AsyncTask
    {
        private bool isInternetReachable()
        {
            try
            {
                var address = InetAddress.GetByName("google.com");
            }
            catch (Exception e)
            {
                return false;
            }
            return true;
        }

        protected override Object DoInBackground(params Object[] @params)
        {
            var res = isInternetReachable();
            return res;
        }
    }

获得您需要做的结果

    var task = new ConnectionCheckAsyncTask();
    task.Execute();
    var isReacheble = (bool)await task.GetAsync();

检查inet连接的另一个选项。您只需使用下一个代码

更改isInternetReachable中的ConnectionCheckAsyncTask即可
        private bool isInternetReachable()
        {
            try
            {
                URL url = new URL("http://www.google.com");
                HttpURLConnection urlConnect = (HttpURLConnection)url.OpenConnection();
                Object objData = urlConnect.GetContent(new Class[0]);
            }
            catch (Exception e)
            {
                return false;
            }
            return true;
        }