Heim >Java >javaLernprogramm >Warum kann mein Java-Code keine anderen Hosts als Localhost anpingen?
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!