Wie prüfe ich die Verfügbarkeit des Internets in Java?

8

Ich will nicht auf die harte Tour sagen, dass das Internet nicht verfügbar ist, wenn ich eine Ausnahme von url.openStream () abfange.

Gibt es eine einfache Möglichkeit festzustellen, ob der Computer in Java mit dem Internet verbunden ist? In diesem Szenario bedeutet "mit dem Internet verbunden", dass Daten von einer bestimmten URL heruntergeladen werden können.

Wenn ich versuche, von ihm herunterzuladen und es nicht verfügbar ist, dann hängt das Programm für ein bisschen. Ich will das nicht hängen. Daher muss ich schnell abfragen, ob die Website verfügbar ist oder nicht.

    
Penchant 13.03.2009, 22:35
quelle

9 Antworten

10

Das Problem, das Sie vermeiden möchten, wartet darauf, dass Ihre HTTP-Verbindung feststellt, dass die URL, auf die Sie zugreifen möchten, nicht verfügbar ist. Um dies zu erreichen, müssen Sie aufhören, url.openStream () zu verwenden, was eine Abkürzung für openConnection () ist. GetInputStream () und erhalten Sie eine feinere Kontrolle über Ihre Verbindung.

%Vor%

Mit diesem Code können Sie den Verbindungsversuch abbrechen, wenn entweder die Verbindung oder der Lesevorgang die Zeit überschreitet, die Sie im parameter timeoutMs angeben.

    
Steve Weet 13.03.2009, 23:15
quelle
5

Verwenden Sie

%Vor%     
Naga Rishi 13.11.2011 04:09
quelle
4

Es gibt keine "Internet-Verfügbarkeit". Stellen Sie sich vor, dass Ihre HTTP-Anfrage einen transparenten HTTP-Proxy durchläuft, Sie versuchen, auf eine Blacklist-Site zuzugreifen, und Sie erhalten eine HTTP-Antwort vom Proxy-Server, die Sie über den verweigerten Zugriff informiert. Ist Internet in diesem Szenario verfügbar oder nicht?

Ich denke, dass Sie bezüglich Ihres Problems genauer sein sollten.

    
Anonymous 13.03.2009 22:39
quelle
2

Sie können vielleicht feststellen, ob ein Compouter mit einem Netzwerk verbunden ist, aber selbst wenn es keine Garantie gibt, dass das Netzwerk funktioniert oder dass es mit dem Internet verbunden ist.

Dies ist einer dieser "lutscht es und seht" Probleme.

Was ist los mit dem Versuch, eine Verbindung herzustellen? Und warum sind Sie besorgt, ob sie mit dem Internet verbunden sind oder nicht?

    
cletus 13.03.2009 22:37
quelle
2

Wenn das Kriterium ist, ob Sie auf einen bestimmten Webserver zugreifen können, ist der einzige Weg, dies herauszufinden, der Zugriff auf diesen Webserver.

Sie können dies jedoch beim Start in einem Hintergrundthread tun, damit die Anwendung nicht verzögert wird. Dann ist die Antwort "Ja / Nein" verfügbar, wenn das tatsächliche Herunterladen gewünscht wird. Fügen Sie eine Nachricht in die Statuszeile ein, damit der Benutzer weiß, was vor sich geht, und nicht überrascht ist, dass er nicht mit dem Netzwerk verbunden ist, wenn er beim Starten des Programms nicht verbunden ist.

    
quelle
1

Ich weiß nicht viel über die in Java verfügbaren Low-Level-HTTP-Installationen, aber Sie könnten im Vorfeld immer eine http HEAD-Anfrage für die URL ausgeben. Dies bewirkt, dass der Server nur die Header und nicht die Daten zurücksendet. Mit einem Timeout von 1-3 Sekunden sollten Sie in der Lage sein, lange Verzögerungen zu vermeiden.

    
Chris 13.03.2009 22:50
quelle
1

Wenn das Programm hängt, während Sie auf den Download warten, verwenden Sie wahrscheinlich den GUI-Thread, um den Download durchzuführen. Wenn Sie einen Hintergrundthread verwenden, bleibt Ihr Programm nicht hängen, selbst wenn es lange dauert, bis es zu einem Timeout / Download kommt.

    
Peter Lawrey 14.03.2009 06:50
quelle
0

Sie könnten eine ICMP-Nachricht an einen sehr bekannten Host senden ...

    
dicroce 13.03.2009 22:39
quelle
0

Sie können nach einem NTP-Server suchen, wenn Ihre Firewall dies nicht verbietet.

Ich denke, die beste Option ist es, zu versuchen, eine URL zu öffnen, während Sie versuchen, dies zu vermeiden, weil der Dienst am häufigsten geöffnet wird.

Sie können nach einer oder zwei dynamischen URLs suchen, die sich ständig ändern. Zum Beispiel, ein Web, das Zeit zeigt. Zum Beispiel dieses fand ich Googleing. Mehr als eins, weil die Seiten nicht erreichbar sind; -)

    
FerranB 13.03.2009 22:50
quelle

Tags und Links