Menyelesaikan Masalah Ping dalam Java
Apabila cuba ping alamat IP menggunakan Java, sesetengah pengguna mungkin menghadapi masalah di mana localhost boleh dihubungi tetapi semua hos lain mengembalikan mesej "Hos TIDAK boleh dihubungi". Artikel ini meneroka punca asas dan menyediakan penyelesaian yang mungkin.
Ilustrasi Kod
Coretan kod yang disediakan cuba ping dua alamat IP: localhost (127.0.0.1) dan alamat luaran (173.194.32.38). Kaedah isReachable() mengembalikan benar jika hos boleh dicapai dalam tempoh tamat masa yang ditentukan (5000 milisaat), jika tidak palsu.
Punca Punca
Menurut dokumentasi Java, kaedah isReachable() biasanya menggunakan ICMP ECHO REQUESTs untuk menentukan kebolehcapaian hos. Walau bagaimanapun, menggunakan ICMP selalunya memerlukan keistimewaan yang tinggi (kebenaran root).
Penyelesaian
Pilihan #1: Dapatkan Keistimewaan Pentadbiran
Jika ICMP tidak disekat oleh tembok api sistem, isunya mungkin kod tidak berjalan dengan kebenaran yang mencukupi untuk melaksanakan operasi ICMP. Cuba jalankan program dengan keistimewaan pentadbiran.
// Windows > runas /profile /user:administrator java -jar myapp.jar // Unix/Linux > sudo java -jar myapp.jar
Jika ICMP disekat, pilihan kedua ialah menggunakan TCP.
Pilihan #2: Dayakan TCP Ping
<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>
Atas ialah kandungan terperinci Mengapakah Program Java Saya Ping Tidak Boleh Dihoskan Selain daripada Localhost?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!