首頁  >  文章  >  Java  >  為什麼在 Java 中無法 Ping 遠端主機?

為什麼在 Java 中無法 Ping 遠端主機?

Barbara Streisand
Barbara Streisand原創
2024-10-26 23:28:30409瀏覽

Why Can't I Ping Remote Hosts in Java?

在Java 中ping IP 位址時排除無法存取主機錯誤

給定的程式碼片段旨在ping IP 位址,但程式遇到問題當嘗試ping 本機以外的主機。雖然停用防火牆可能會消除網路限制,但程式碼無法有效 ping 遠端主機。

此問題的根源在於InetAddress.isReachable() 方法利用不同的機制來確定基於主機的可達性關於權限的可用性,如Java文件中所述:

「如果可以取得權限,典型的實作將使用ICMP ECHO REQUEST,否則它將嘗試在連接埠7上建立TCP連接(Echo)目標主機的。 ”

在大多數情況下,ICMP ECHO REQUEST 用於檢查主機的可及性。但是,在許多作業系統中使用 ICMP 需要管理(root)權限。如果沒有這些權限,則該方法將回退到在連接埠 7 上建立 TCP 連線。

要解決此問題,請確保程式有足夠的權限來執行 ICMP ECHO REQUEST。如果這不可行,請考慮使用不依賴 ICMP 的替代方法進行主機可達性測試。

以上是為什麼在 Java 中無法 Ping 遠端主機?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn