Java sprawdzenie czy "jest net"

0

Próbuję zrobić coś takiego, że kiedy nie ma połączenia z internetem program się nie uruchamia tylko pojawia się stosowna informacja.
Znalazłem coś takiego:
if("127.0.0.1".equals(InetAddress.getLocalHost().getHostAddress().toString())==false){}

Jeśli zwraca false to oznacza, że jest połaczenie w przeciwnym wypadku nie. No i działa, tylko że jak jest odłaczony kabel lub wyłaczona karta sieciowa. Jak karta działa kabel wpięty a internet nie działa to i tak pokazuje, jakby było.

Po pierwsze: Czy mógłby mi ktoś wytłumaczyć na jakiej zasadzie to działa? Wiem tyle, żę to adres loopback.
Po drugie: Czy zna ktoś sposób na szybkie sprawdzenie połączenia? Coś w stylu androidowego isconnected?

0

Cześć,
takie coś powinno Ci pomóc:

 public boolean CzyJestInternet() {
        boolean Zwrotka = false;
        try {
            final URL url = new URL("http://www.google.com");
            final URLConnection conn = url.openConnection();
            Zwrotka = true;
        } catch (Exception e) {
            log.info("Nie można podłączyć się do internetu. Błąd: " + e.getMessage());
            return Zwrotka;
        }
        return Zwrotka;

    }
0

A co jeśli google nie będzie działać?

0

Zrobiłem tak ale niestety nie działa należycie. Zamiast dialogu pojawia się gui bez opcji uzależnionych od neta.
Nie wiem czy to ma większe znaczenie ale jest też warning-unused do obiektu conn.

 

public class Main {

	public static void main(String[] args) throws IOException {
	
	
		if(checkNet()==true){
			Gui gui = new Gui();
			gui.tworzGui();
			
		}else{
			JOptionPane.showMessageDialog(null, "Program wymaga połączenia z internetem.", "Brak połaczenia", 0);
		}

	}
	
	public static boolean checkNet() {
        boolean Zwrotka = false;
        try {
            final URL url = new URL("http://www.google.com");
			final URLConnection conn = url.openConnection();
            Zwrotka = true;
        } catch (Exception e) {
            e.printStackTrace();
            return Zwrotka;
        }
        return Zwrotka;
 
    }

}
0

Nie uda się w ten sposób, ponieważ podajesz adres po nazwie, co w przypadku braku usługi rozwiązywania adresów da fałszywą informację. Najbezpieczniej jest użyć javowego pseudo pinga na socketach (java nie wspiera ICMP jako takiego) na adres 8.8.8.8 (DNS od google) > http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html

0

Z racji, że jestem początkujący bardzo bym prosił o przykładowe zastosowanie w tym przypadku bo nie mogę sobie z tym poradzić.

0
URL url=new URL("cośtam");
URLConnection connection=url.openConnection()
connection.getInputStream();;

Jak nie wyrzuci wyjątku znaczy że internet działa.

0

Śmiga elegancko to w sumie w pierwszej odpowiedzi brakło jednej linijki ;p dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1