Как я могу выяснить, доступно ли сетевое соединение в java?

Как я могу выяснить, доступно ли сетевое соединение в java? Я хочу получить информацию о сетевом подключении. Если он доступен, я подключаюсь к сети для получения данных, в противном случае я использую локальную базу данных.

Есть ли какое-нибудь решение?


person azad    schedule 14.03.2013    source источник
comment
NetworkInterface не предоставляет ничего для этого .   -  person Kai    schedule 14.03.2013
comment
Почему? Я хочу проверить это прагматично.   -  person azad    schedule 14.03.2013


Ответы (4)


Например, @igor сказал: "Попробуйте подключиться к сети, как вы сказали. Если не удается, повторите, например, 3 раза. Если все еще не удается, используйте локальную базу данных. Вам не нужно ничего дополнительно пинговать."

Например:

    public class InternetConnection {
    /*  use at least one reliable host, in most cases you will want
        to use the one you're working with later    */
    private static final String CHECK_URL = "http://www.t-online.de/";
    public static InternetConnectionState isAvailable() {
        try {
            URL url = new URL(InternetConnection.CHECK_URL);
            HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
            Object objData = urlConnection.getContent();
        } catch(UnknownHostException exception) {
            return new InternetConnectionState(false);
        } catch(IOException exception) {
            return new InternetConnectionState(false);
        }
        return new InternetConnectionState(true);
    }
}

Основная ссылка

person Omid Nazifi    schedule 14.03.2013

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

Для простоты вы можете использовать библиотеку Jodd HTTP, например:

try {
    HttpRequest.get("http://stackoverflow.com").send();
    return true;
} catch (Exception ex) {
    return false;
}
person igr    schedule 14.03.2013

Вы можете пропинговать хост. Видеть

java-код для проверки связи с IP-адресом

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

person Pranav Kevadiya    schedule 14.03.2013

Вы можете использовать java.net.NetworkInterface для вот простой пример, как это сделать:

public boolean isConnectedToNetwork() {
    Enumeration<NetworkInterface> interfaceEnumeration = NetworkInterface.getNetworkInterfaces();
    while (interfaceEnumeration.hasMoreElements()) {
    NetworkInterface each = interfaceEnumeration.nextElement();

     if (!each.isLoopback() && each.isUp()) {
          return true;
      }
    }
    return false;
} 

Обратите внимание, что вы должны проверить, не является ли это петлевым интерфейсом.

person pabrantes    schedule 14.03.2013