Håndtering af java.net.ConnectException

1. Introduktion

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

2. Hvad der forårsager java.net.ConnectException

Det java.net.ConnectException undtagelse er en af ​​de mest almindelige Java-undtagelser relateret til netværk. Vi støder muligvis på det, når vi opretter en TCP-forbindelse fra et klientprogram til en server. Da det er en kontrolleret undtagelse, skal vi håndtere det ordentligt i vores kode i en prøve-fangst blok.

Der er mange mulige årsager til denne undtagelse:

  • Den server, vi prøver at oprette forbindelse til, startes simpelthen ikke, derfor kan vi ikke få forbindelse
  • Den vært- og portkombination, vi bruger til at oprette forbindelse til serveren, er muligvis forkert
  • En firewall blokerer muligvis forbindelser fra bestemte IP-adresser eller porte

3. Fangst undtagelsen programmatisk

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

String vært = "localhost"; int-port = 5000; prøv {Socket clientSocket = ny Socket (vært, port); // gør noget med den vellykkede åbne socket clientSocket.close (); } fange (ConnectException e) {// vært og port kombination ikke gyldig e.printStackTrace (); } fange (Undtagelse e) {e.printStackTrace (); }

Hvis værts- og portkombinationen er forkert, Stikkontakt vil kaste en java.net.ConnectException. I vores kodeeksempel ovenfor udskriver vi stacksporingen for bedre at bestemme, hvad der går galt. Intet synligt stakspor betyder, at vores kode er tilsluttet til serveren.

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

4. Kontrol af forbindelser med CLI

Gennem CLI kan vi brug ping kommando for at kontrollere, om den server, vi prøver at oprette forbindelse til, kører.

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

ping baeldung.com

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

PING baeldung.com (104.18.63.78): 56 databytes 64 bytes fra 104.18.63.78: icmp_seq = 0 ttl = 57 tid = 7.648 ms 64 bytes fra 104.18.63.78: icmp_seq = 1 ttl = 57 tid = 14.493 ms

telnet er et andet nyttigt CLI-værktøj, som vi kan bruge til at oprette forbindelse til en bestemt vært eller IP-adresse. Derudover kan vi også videregive en nøjagtig port, som vi vil teste. Ellers vil standardport 23 blive brugt.

For eksempel, hvis vi vil oprette forbindelse til Baeldung-webstedet på port 80, kan vi køre:

telnet baeldung.com 80

Det er værd at bemærke det ping og telnet kommandoer fungerer muligvis ikke altid - selvom den server, vi prøver at nå, kører, og vi bruger den korrekte vært 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 for specifik internettrafik, være en anden årsag til fejl.

5. Konklusion

I denne hurtige vejledning har vi diskuteret den almindelige undtagelse fra Java-netværket, 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.


$config[zx-auto] not found$config[zx-overlay] not found