Gestion de java.net.ConnectException

1. Introduction

Dans ce tutoriel rapide, nous discuterons de certaines causes possibles de java.net.ConnectException . Ensuite, nous montrerons comment vérifier la connexion à l'aide de deux commandes accessibles au public et d'un petit exemple Java.

2. Quelles sont les causes de java.net.ConnectException

L' exception java.net.ConnectException est l'une des exceptions Java les plus courantes liées à la mise en réseau. Nous pouvons le rencontrer lorsque nous établissons une connexion TCP entre une application cliente et un serveur. Comme il s'agit d'une exception vérifiée, nous devons la gérer correctement dans notre code dans un bloc try-catch .

Il existe de nombreuses causes possibles de cette exception:

  • Le serveur auquel nous essayons de nous connecter n'est tout simplement pas démarré, par conséquent, nous ne pouvons pas obtenir de connexion
  • La combinaison hôte et port que nous utilisons pour nous connecter au serveur peut être incorrecte
  • Un pare-feu peut bloquer les connexions à partir d'adresses IP ou de ports spécifiques

3. Attraper l'exception par programme

Nous nous connectons généralement au serveur par programmation en utilisant la classe java.net.Socket . Pour établir une connexion TCP, nous devons nous assurer que nous nous connectons à la bonne combinaison hôte et port:

String host = "localhost"; int port = 5000; try { Socket clientSocket = new Socket(host, port); // do something with the successfully opened socket clientSocket.close(); } catch (ConnectException e) { // host and port combination not valid e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }

Si la combinaison hôte et port est incorrecte, Socket lèvera une exception java.net.ConnectException. Dans notre exemple de code ci-dessus, nous imprimons la trace de la pile pour mieux déterminer ce qui ne va pas. Aucune trace de pile visible signifie que notre code s'est connecté avec succès au serveur.

Dans ce cas, nous devons vérifier les détails de la connexion avant de continuer. Nous devons également vérifier que notre pare-feu n'empêche pas la connexion.

4. Vérification des connexions avec la CLI

Grâce à la CLI, nous pouvons utiliser la commande ping pour vérifier si le serveur auquel nous essayons de nous connecter est en cours d'exécution .

Par exemple, nous pouvons vérifier si le serveur Baeldung est démarré:

ping baeldung.com

Si le serveur Baeldung est en cours d'exécution, nous devrions voir des informations sur les paquets envoyés et reçus.

PING baeldung.com (104.18.63.78): 56 data bytes 64 bytes from 104.18.63.78: icmp_seq=0 ttl=57 time=7.648 ms 64 bytes from 104.18.63.78: icmp_seq=1 ttl=57 time=14.493 ms

telnet est un autre outil CLI utile que nous pouvons utiliser pour nous connecter à un hôte ou une adresse IP spécifié. De plus, nous pouvons également passer un port exact que nous voulons tester. Sinon, le port 23 par défaut sera utilisé.

Par exemple, si nous voulons nous connecter au site Web de Baeldung sur le port 80, nous pouvons exécuter:

telnet baeldung.com 80

Il convient de noter que les commandes ping et telnet peuvent ne pas toujours fonctionner, même si le serveur que nous essayons d'atteindre est en cours d'exécution et que nous utilisons la bonne combinaison d'hôte et de port. C'est souvent le cas dans les systèmes de production, qui sont généralement fortement sécurisés pour empêcher tout accès non autorisé. En outre, un pare-feu bloquant un trafic Internet spécifique peut être une autre cause de panne.

5. Conclusion

Dans ce rapide didacticiel, nous avons discuté de l'exception de réseau Java courante, java.net.ConnectException .

Nous avons commencé par une explication des causes possibles de cette exception. Nous avons montré comment intercepter l'exception par programme, ainsi que deux commandes CLI utiles qui pourraient aider à déterminer la cause.

Comme toujours, le code affiché dans cet article est disponible à l'adresse over sur GitHub.