Xamarin INetAddress.GetByName всегда выдает исключение

Я пытаюсь получить INetAddress с помощью следующего кода:

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

Но он всегда печатает "не работает". Я проверил, и мое интернет-соединение в порядке. Я не знаю, почему это происходит. Заранее спасибо.

1 ответ

Я мог бы решить это с помощью 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();

Еще одна возможность проверить подключение к Интернету. Все, что вам нужно, это изменить 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;
        }
Другие вопросы по тегам