Maison > Java > javaDidacticiel > Pourquoi InetAddress.isReachable() diffère-t-il parfois des résultats de ping ?

Pourquoi InetAddress.isReachable() diffère-t-il parfois des résultats de ping ?

Mary-Kate Olsen
Libérer: 2024-12-01 01:55:10
original
375 Les gens l'ont consulté

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

Comprendre les résultats d'InetAddress.isReachable()

La classe InetAddress fournit un mécanisme pour obtenir des informations sur les adresses réseau. L'une de ses méthodes, isReachable(), vérifie si un hôte est accessible depuis la machine locale. Cependant, les utilisateurs peuvent rencontrer des écarts entre le ping d'une adresse IP et le résultat de InetAddress.isReachable().

Indépendance de la plate-forme pour les tests d'accessibilité

Pour une solution indépendante de la plate-forme , pensez à utiliser le code suivant, qui nécessite la connaissance d'un port ouvert sur la cible 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;
    }
}
Copier après la connexion
Copier après la connexion

Version succincte mise à jour

Basée sur un commentaire récent, voici une version plus concise du code ci-dessus :

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;
    }
}
Copier après la connexion
Copier après la connexion

Cette solution est indépendante de la plateforme et fournit des résultats d'accessibilité fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal