Rumah  >  Artikel  >  Java  >  Mengapakah Program Java Saya Ping Tidak Boleh Dihoskan Selain daripada Localhost?

Mengapakah Program Java Saya Ping Tidak Boleh Dihoskan Selain daripada Localhost?

Susan Sarandon
Susan Sarandonasal
2024-10-25 09:09:02514semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn