Rumah >Java >javaTutorial >Mengapa Saya Tidak Boleh Ping Hos Jauh di Jawa?
Menyelesaikan Masalah Ralat Hos Tidak Boleh Dicapai Semasa Ping Alamat IP dalam Java
Coretan kod yang diberikan bertujuan untuk ping alamat IP, tetapi program menghadapi masalah apabila cuba ping hos selain localhost. Walaupun melumpuhkan tembok api mungkin mengalih keluar sekatan rangkaian, kod tersebut gagal untuk ping hos jauh dengan berkesan.
Punca isu ini terletak pada fakta bahawa kaedah InetAddress.isReachable() menggunakan mekanisme yang berbeza untuk menentukan kebolehcapaian hos berdasarkan mengenai ketersediaan keistimewaan, seperti yang dinyatakan dalam dokumentasi Java:
"Pelaksanaan biasa akan menggunakan ICMP ECHO REQUESTs jika keistimewaan boleh diperolehi, jika tidak, ia akan cuba mewujudkan sambungan TCP pada port 7 (Echo) daripada hos destinasi."
Dalam kebanyakan kes, ICMP ECHO REQUESTs digunakan untuk menyemak kebolehcapaian hos. Walau bagaimanapun, menggunakan ICMP memerlukan keistimewaan pentadbiran (root) dalam banyak sistem pengendalian. Tanpa keistimewaan ini, kaedah ini akan kembali kepada mewujudkan sambungan TCP pada port 7.
Untuk menyelesaikan masalah ini, pastikan program mempunyai keistimewaan yang mencukupi untuk melaksanakan PERMINTAAN ICMP ECHO. Jika itu tidak boleh dilaksanakan, pertimbangkan untuk menggunakan kaedah alternatif untuk ujian kebolehcapaian hos yang tidak bergantung pada ICMP.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Ping Hos Jauh di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!