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

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

Susan Sarandon
Lepaskan: 2024-10-25 09:09:02
asal
606 orang telah melayarinya

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
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan