ホームページ > 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 クラスは、ネットワーク アドレスに関する情報を取得するメカニズムを提供します。そのメソッドの 1 つである isReachable() は、ローカル マシンからホストに到達できるかどうかを確認します。ただし、ユーザーは、IP アドレスの ping と 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート