Rumah  >  Artikel  >  Java  >  Mengapa Kod Java Saya Gagal Ping Hos Selain Localhost?

Mengapa Kod Java Saya Gagal Ping Hos Selain Localhost?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 17:42:57266semak imbas

Why is My Java Code Failing to Ping Hosts Other Than Localhost?

Menyelesaikan Masalah Kebolehcapaian Hos Menggunakan Ping dalam Java

Di Java, ping alamat IP boleh dilakukan menggunakan kaedah InetAddress.isReachable(). Walau bagaimanapun, kadangkala ia mungkin menghadapi isu apabila hos selain localhost kelihatan tidak dapat dicapai.

Masalah Asal

Pertimbangkan coretan kod Java berikut:

<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>

Keluaran kod ini ialah:

Sending Ping Request to 127.0.0.1
Host is reachable
Sending Ping Request to 173.194.32.38
Host is NOT reachable

Hasil ini menunjukkan bahawa ping localhost berjaya, tetapi hos lain tidak dapat dicapai.

Penjelasan Penyelesaian

Menurut kaedah InetAddress.isReachable() dalam dokumentasi Java:

"... Pelaksanaan tipikal akan menggunakan ICMP ECHO REQUESTs jika keistimewaan
boleh diperolehi, jika tidak, ia akan cuba mewujudkan sambungan TCP
pada port 7 (Echo) hos destinasi..."

Pilihan #1 (menggunakan ICMP ECHO REQUESTs) biasanya memerlukan keistimewaan pentadbiran (root). Jika keistimewaan ini tidak diberikan, kaedah akan cuba menggunakan TCP untuk menentukan kebolehcapaian.

Kesimpulan

Apabila menghadapi masalah dengan ping hos selain localhost, ada kemungkinan bahawa Keistimewaan ICMP tidak diberikan. Memastikan bahawa keistimewaan yang diperlukan diberikan dapat menyelesaikan ralat Host Not Reachable.

Atas ialah kandungan terperinci Mengapa Kod Java Saya Gagal Ping Hos Selain 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