Heim >Java >javaLernprogramm >Warum unterscheidet sich InetAddress.isReachable() manchmal von den Ping-Ergebnissen?

Warum unterscheidet sich InetAddress.isReachable() manchmal von den Ping-Ergebnissen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-01 01:55:10322Durchsuche

Why Does InetAddress.isReachable() Sometimes Differ from Ping Results?

Informationen zu InetAddress.isReachable()-Ergebnissen

Die InetAddress-Klasse bietet einen Mechanismus zum Abrufen von Informationen über Netzwerkadressen. Eine seiner Methoden, isReachable(), prüft, ob ein Host vom lokalen Rechner aus erreichbar ist. Benutzer können jedoch auf Diskrepanzen zwischen dem Pingen einer IP-Adresse und dem Ergebnis von InetAddress.isReachable() stoßen.

Plattformunabhängigkeit für Erreichbarkeitstests

Für eine plattformunabhängige Lösung Erwägen Sie die Verwendung des folgenden Codes, der Kenntnisse über einen offenen Port auf dem Ziel erfordert Maschine:

private static boolean isReachable(String addr, int openPort, int timeOutMillis) {
    // Any Open port on other machine
    // openPort =  22 - ssh, 80 or 443 - webserver, 25 - mailserver etc.
    try (Socket soc = new Socket()) {
        soc.connect(new InetSocketAddress(addr, openPort), timeOutMillis);
        return true;
    } catch (IOException ex) {
        return false;
    }
}

Aktualisierte prägnante Version

Basierend auf einem aktuellen Kommentar ist hier eine prägnantere Version des obigen Codes:

private static boolean isReachable(String addr, int openPort, int timeOutMillis) {
    // Any Open port on other machine
    // openPort =  22 - ssh, 80 or 443 - webserver, 25 - mailserver etc.
    try (Socket soc = new Socket()) {
        soc.connect(new InetSocketAddress(addr, openPort), timeOutMillis);
        return true;
    } catch (IOException ex) {
        return false;
    }
}

Diese Lösung ist plattformunabhängig und liefert zuverlässige Erreichbarkeitsergebnisse.

Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich InetAddress.isReachable() manchmal von den Ping-Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn