Heim >Java >javaLernprogramm >Warum kann mein Java-Code keine anderen Hosts als Localhost anpingen?

Warum kann mein Java-Code keine anderen Hosts als Localhost anpingen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 17:42:57358Durchsuche

Why is My Java Code Failing to Ping Hosts Other Than Localhost?

Fehlerbehebung bei der Host-Erreichbarkeit mithilfe von Ping in Java

In Java kann das Pingen einer IP-Adresse mithilfe der Methode InetAddress.isReachable() erfolgen. Allerdings kann es manchmal zu Problemen kommen, bei denen andere Hosts als localhost nicht erreichbar erscheinen.

Ursprüngliches Problem

Bedenken Sie den folgenden Java-Codeausschnitt:

<code class="java">public static void main(String[] args) throws UnknownHostException, IOException {
    String ipAddress = "127.0.0.1";
    InetAddress inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");

    ipAddress = "173.194.32.38";
    inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");
}</code>

Die Ausgabe dieses Codes lautet:

Sending Ping Request to 127.0.0.1
Host is reachable
Sending Ping Request to 173.194.32.38
Host is NOT reachable

Dieses Ergebnis deutet darauf hin, dass das Pingen von localhost erfolgreich war, andere Hosts jedoch nicht erreichbar sind.

Lösungserklärung

Gemäß der InetAddress.isReachable()-Methode in der Java-Dokumentation:

"... Eine typische Implementierung verwendet ICMP-ECHO-REQUESTs, wenn das
-Privileg erhalten werden kann, andernfalls wird versucht, sich zu etablieren eine TCP
-Verbindung an Port 7 (Echo) des Zielhosts..."

Option Nr. 1 (mit ICMP ECHO REQUESTs) erfordert normalerweise Administratorrechte (Root). Wenn diese Berechtigungen nicht gewährt werden, versucht die Methode, TCP zu verwenden, um die Erreichbarkeit zu ermitteln.

Fazit

Wenn Probleme mit dem Ping von anderen Hosts als localhost auftreten, ist es möglich, dass ICMP-Berechtigungen werden nicht gewährt. Durch Sicherstellen, dass die erforderlichen Berechtigungen gewährt werden, kann der Fehler „Host nicht erreichbar“ behoben werden.

Das obige ist der detaillierte Inhalt vonWarum kann mein Java-Code keine anderen Hosts als Localhost anpingen?. 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