Certains ont suggéré d'utiliser INetAddress.isReachable. Le problème est que certains sites configurent leurs pare-feu pour bloquer les messages ICMP Ping. Ainsi, un "ping" peut échouer même si le service web est accessible.
Et bien sûr, l'inverse est également vrai. Un hôte peut répondre à un ping même si le serveur web est hors service.
Et bien sûr, une machine peut ne pas être en mesure de se connecter directement à certains (ou à tous) serveurs web en raison de restrictions du pare-feu local.
Le problème fondamental est que "peut se connecter à l'internet" est une question mal définie, et ce genre de chose est difficile à tester sans :
- des informations sur la machine de l'utilisateur et l'environnement réseau "local", et
- des informations sur ce à quoi l'application doit accéder.
En général, la solution la plus simple consiste donc pour une application à essayer d'accéder à tout ce à quoi elle doit accéder, et à faire appel à l'intelligence humaine pour effectuer le diagnostic.
0 votes
La réponse à cette question est la même que pour de nombreuses autres questions de la même forme. La seule façon correcte de déterminer si une ressource est disponible est d'essayer de l'utiliser, dans le cours normal de l'exécution, et de faire face aux échecs lorsqu'ils se produisent. Toute autre technique consiste, sous une forme ou une autre, à essayer de prédire l'avenir.