首頁 > Java > java教程 > 為什麼 InetAddress.isReachable() 有時與 Ping 結果不同?

為什麼 InetAddress.isReachable() 有時與 Ping 結果不同?

Mary-Kate Olsen
發布: 2024-12-01 01:55:10
原創
315 人瀏覽過

Why Does InetAddress.isReachable() Sometimes Differ from Ping Results?

了解 InetAddress.isReachable() 結果

InetAddress 類別提供了一種獲取有關網路位址資訊的機制。它的方法之一 isReachable() 檢查是否可以從本機電腦存取主機。但是,使用者可能會遇到 ping IP 位址與 InetAddress.isReachable() 結果之間的差異。

可達性測試的平台獨立性

針對獨立於平台的解決方案,考慮使用以下程式碼,這需要了解目標上的開放端口machine:

private static boolean isReachable(String addr, int openPort, int timeOutMillis) {
    // Any Open port on other machine
    // openPort =  22 - ssh, 80 or 443 - webserver, 25 - mailserver etc.
    try (Socket soc = new Socket()) {
        soc.connect(new InetSocketAddress(addr, openPort), timeOutMillis);
        return true;
    } catch (IOException ex) {
        return false;
    }
}
登入後複製
登入後複製

更新簡潔版本

根據最近的評論,這裡是上述程式碼的更簡潔版本:

private static boolean isReachable(String addr, int openPort, int timeOutMillis) {
    // Any Open port on other machine
    // openPort =  22 - ssh, 80 or 443 - webserver, 25 - mailserver etc.
    try (Socket soc = new Socket()) {
        soc.connect(new InetSocketAddress(addr, openPort), timeOutMillis);
        return true;
    } catch (IOException ex) {
        return false;
    }
}
登入後複製
登入後複製

此解決方案獨立於平台,並提供可靠的可及性結果。

以上是為什麼 InetAddress.isReachable() 有時與 Ping 結果不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板