Heim > Java > javaLernprogramm > Hauptteil

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

Susan Sarandon
Freigeben: 2024-10-25 09:09:02
Original
525 Leute haben es durchsucht

Why Can't My Java Program Ping Hosts Other Than Localhost?

Fehlerbehebung bei Ping-Problemen in Java

Beim Versuch, eine IP-Adresse mit Java anzupingen, kann bei einigen Benutzern das Problem auftreten, dass der lokale Host erreichbar ist aber alle anderen Hosts geben die Meldung „Host ist NICHT erreichbar“ zurück. Dieser Artikel untersucht die zugrunde liegende Ursache und bietet eine mögliche Lösung.

Codeillustration

Das bereitgestellte Codefragment versucht, zwei IP-Adressen anzupingen: localhost (127.0.0.1) und eine externe Adresse (173.194.32.38). Die Methode isReachable() gibt true zurück, wenn der Host innerhalb des angegebenen Timeouts (5000 Millisekunden) erreichbar ist, andernfalls false.

Ursache

Gemäß der Java-Dokumentation Die Methode isReachable() verwendet normalerweise ICMP ECHO REQUESTs, um die Erreichbarkeit des Hosts zu bestimmen. Für die Verwendung von ICMP sind jedoch häufig erhöhte Berechtigungen (Root-Berechtigungen) erforderlich.

Lösung

Option #1: Administratorrechte erhalten

Wenn ICMP nicht blockiert ist Durch die Systemfirewall kann das Problem darin bestehen, dass der Code nicht mit ausreichenden Berechtigungen zum Ausführen von ICMP-Vorgängen ausgeführt wird. Versuchen Sie, das Programm mit Administratorrechten auszuführen.

// Windows
> runas /profile /user:administrator java -jar myapp.jar

// Unix/Linux
> sudo java -jar myapp.jar
Nach dem Login kopieren

Wenn ICMP blockiert ist, besteht die zweite Option darin, stattdessen TCP zu verwenden.

Option #2: TCP-Ping aktivieren

<code class="java">// This example uses the Google DNS server
String ipAddress = "173.194.32.38";
try {
    Socket socket = new Socket();
    socket.connect(new InetSocketAddress(ipAddress, 80), 5000);
    System.out.println("Host " + ipAddress + " is reachable");
} catch (IOException e) {
    System.out.println("Host " + ipAddress + " is NOT reachable");
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann mein Java-Programm keine anderen Hosts als Localhost anpingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!