Java >> Java tutorial >  >> Tag >> java.net

Håndtering af java.net.ConnectException

1. Introduktion

I denne hurtige selvstudie vil vi diskutere nogle mulige årsager til java.net.ConnectException . Derefter viser vi, hvordan man kontrollerer forbindelsen ved hjælp af to offentligt tilgængelige kommandoer og et lille Java-eksempel.

2. Hvad forårsager java.net.ConnectException

java.net.ConnectException undtagelse er en af ​​de mest almindelige Java-undtagelser relateret til netværk. Vi kan støde på det, når vi etablerer en TCP-forbindelse fra en klientapplikation til en server. Da det er en kontrolleret undtagelse, bør vi håndtere det korrekt i vores kode i en try-catch blokere.

Der er mange mulige årsager til denne undtagelse:

  • Serveren, vi forsøger at oprette forbindelse til, er simpelthen ikke startet, derfor kan vi ikke opnå en forbindelse
  • Vært- og portkombinationen, vi bruger til at oprette forbindelse til serveren, kan være forkert
  • En firewall kan blokere forbindelser fra bestemte IP-adresser eller porte

3. At fange undtagelsen programmatisk

Vi forbinder normalt til serveren programmatisk ved hjælp af java.net.Socket klasse. For at etablere en TCP-forbindelse skal vi sørge for, at vi opretter forbindelse til den korrekte værts- og portkombination:

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();
}

Hvis værts- og portkombinationen er forkert, Socket vil kaste en java.net.ConnectException. I vores kodeeksempel ovenfor udskriver vi staksporet for bedre at kunne afgøre, hvad der går galt. Ingen synlig staksporing betyder, at vores kode er forbundet med serveren.

I dette tilfælde bør vi kontrollere forbindelsesdetaljerne, før vi fortsætter. Vi bør også kontrollere, at vores firewall ikke forhindrer forbindelsen.

4. Kontrol af forbindelser med CLI

Gennem CLI kan vi bruge ping kommando for at kontrollere, om den server, vi forsøger at oprette forbindelse til, kører .

For eksempel kan vi kontrollere, om Baeldung-serveren er startet:

ping baeldung.com

Hvis Baeldung-serveren kører, bør vi se oplysninger om sendte og modtagne pakker.

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 er et andet nyttigt CLI-værktøj, som vi kan bruge til at oprette forbindelse til en specificeret vært eller IP-adresse. Derudover kan vi også passere en nøjagtig port, som vi vil teste. Ellers vil standardport 23 blive brugt.

For eksempel, hvis vi ønsker at oprette forbindelse til Baeldungs ​​websted på port 80, kan vi køre:

telnet baeldung.com 80

Det er værd at bemærke, at ping og telnet kommandoer virker muligvis ikke altid - selvom den server, vi forsøger at nå, kører, og vi bruger den korrekte værts- og portkombination. Dette er ofte tilfældet i produktionssystemer, som normalt er stærkt sikret for at forhindre uautoriseret adgang. Desuden kan en firewall, der blokerer specifik internettrafik, være en anden årsag til fejl.

5. Konklusion

I dette hurtige selvstudium har vi diskuteret den almindelige undtagelse for Java-netværk, java.net.ConnectException .

Vi startede med en forklaring på mulige årsager til denne undtagelse. Vi viste, hvordan man fanger undtagelsen programmatisk sammen med to nyttige CLI-kommandoer, der kan hjælpe med at bestemme årsagen.

Som altid er koden vist i denne artikel tilgængelig på GitHub.


No
Java tag