Проверка доступности / доступности хоста на Android

Я пытаюсь сделать то, что, как я думал, будет простой достижимость хост-теста в начале моих интернет-проектов приложений, но документация не помогает, и ни один из примеров не найден в разных местах, я попробовал множество решений без везения, поэтому, если бы кто-нибудь мог Назовите меня в направлении окончательного способа проверить доступность хостов с помощью андроида, который будет потрясающим, просто нужно, чтобы он переключил bool на true, если хост может быть достигнут

Im, используя API8, если это имеет большое значение для этого процесса и должно обслуживать не-корневые устройства, поэтому inetaddress.isReachable отсутствует

Solutions Collecting From Web of "Проверка доступности / доступности хоста на Android"

Это некрасиво, но я так и сделал:

boolean exists = false; try { SocketAddress sockaddr = new InetSocketAddress(ip, port); // Create an unbound socket Socket sock = new Socket(); // This method will block no more than timeoutMs. // If the timeout occurs, SocketTimeoutException is thrown. int timeoutMs = 2000; // 2 seconds sock.connect(sockaddr, timeoutMs); exists = true; } catch(IOException e) { // Handle exception } 

Чтобы проверить подключение, вы можете использовать:

 public boolean isOnline(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); return netInfo != null && netInfo.isConnectedOrConnecting(); } 

Если он сообщает о соединении, вы также можете проверить с помощью попытки получить http-адрес на адрес, а затем проверить возвращаемый код состояния. Если код статуса не возвращается, это довольно очевидно, что хост недоступен.

Попробуй это:

  boolean reachable; try { reachable = InetAddress.getByName("www.example.com").isReachable(2000); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(reachable == true){ ... } else{ ... }