Håndtering av java.net.ConnectException

1. Introduksjon

I denne raske opplæringen vil vi diskutere noen mulige årsaker til java.net.ConnectException. Deretter viser vi hvordan vi kan kontrollere forbindelsen ved hjelp av to offentlig tilgjengelige kommandoer og et lite Java-eksempel.

2. Hva som forårsaker java.net.ConnectException

De java.net.ConnectException unntak er et av de vanligste Java-unntakene knyttet til nettverk. Vi kan støte på det når vi oppretter en TCP-forbindelse fra et klientprogram til en server. Ettersom det er et sjekket unntak, bør vi håndtere det riktig i koden vår i a prøvefangst blokkere.

Det er mange mulige årsaker til dette unntaket:

  • Serveren vi prøver å koble til er ganske enkelt ikke startet, derfor kan vi ikke opprette en forbindelse
  • Vert- og portkombinasjonen vi bruker for å koble til serveren, kan være feil
  • En brannmur kan blokkere tilkoblinger fra bestemte IP-adresser eller porter

3. Fange unntaket programmatisk

Vi kobler vanligvis til serveren programmatisk ved hjelp av java.net. stikkontakt klasse. For å opprette en TCP-forbindelse, må vi sørg for at vi kobler til riktig verts- og portkombinasjon:

Strengvert = "localhost"; int port = 5000; prøv {Socket clientSocket = new Socket (vert, port); // gjør noe med vellykket åpnet socket clientSocket.close (); } fange (ConnectException e) {// verts- og portkombinasjon ikke gyldig e.printStackTrace (); } fange (Unntak e) {e.printStackTrace (); }

Hvis verts- og portkombinasjonen er feil, Stikkontakt vil kaste en java.net.ConnectException. I vårt kodeeksempel ovenfor skriver vi ut stabelsporet for bedre å finne ut hva som går galt. Ingen synlig stakksporing betyr at koden vår ble koblet til serveren.

I dette tilfellet bør vi sjekke tilkoblingsdetaljene før du fortsetter. Vi bør også sjekke at brannmuren vår ikke forhindrer tilkoblingen.

4. Kontrollere tilkoblinger med CLI

Gjennom CLI kan vi bruke ping kommando for å sjekke om serveren vi prøver å koble til kjører.

For eksempel kan vi sjekke om Baeldung-serveren er startet:

ping baeldung.com

Hvis Baeldung-serveren kjører, bør vi se informasjon om sendte og mottatte pakker.

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

telnet er et annet nyttig CLI-verktøy som vi kan bruke til å koble til en spesifisert vert eller IP-adresse. I tillegg kan vi også sende en nøyaktig port som vi vil teste. Ellers vil standardport 23 brukes.

Hvis vi for eksempel vil koble til nettstedet Baeldung på port 80, kan vi kjøre:

telnet baeldung.com 80

Det er verdt å merke seg det ping og telnet kommandoer fungerer ikke alltid - selv om serveren vi prøver å nå kjører, og vi bruker riktig verts- og portkombinasjon. Dette er ofte tilfelle i produksjonssystemer, som vanligvis er tungt sikret for å forhindre uautorisert tilgang. Dessuten kan en brannmur som blokkerer spesifikk internettrafikk være en annen årsak til feil.

5. Konklusjon

I denne raske opplæringen har vi diskutert det vanlige unntaket for Java-nettverk, java.net.ConnectException.

Vi startet med en forklaring på mulige årsaker til dette unntaket. Vi viste hvordan vi kunne fange unntaket programmatisk, sammen med to nyttige CLI-kommandoer som kan bidra til å avgjøre årsaken.

Som alltid er koden vist i denne artikkelen tilgjengelig på GitHub.


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