在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中文網其他相關文章!