A java.net kezelése.ConnectException

1. Bemutatkozás

Ebben a gyors bemutatóban megvitatjuk a lehetséges okokat java.net.ConnectException. Ezután megmutatjuk, hogyan ellenőrizhetjük a kapcsolatot két nyilvánosan elérhető parancs és egy kis Java példa segítségével.

2. Mi okozza java.net.ConnectException

A java.net.ConnectException Kivétel az egyik leggyakoribb Java kivétel a hálózatépítéssel kapcsolatban. Akkor találkozhatunk vele, amikor TCP kapcsolatot létesítünk egy ügyfélalkalmazás és egy szerver között. Mivel ez egy bejelölt kivétel, azt megfelelően kell kezelnünk a kódunkban próbáld elkapni Blokk.

Ennek a kivételnek számos oka lehet:

  • A szerver, amelyhez csatlakozni próbálunk, egyszerűen nem indul el, ezért nem tudunk kapcsolatot létesíteni
  • A kiszolgálóhoz való csatlakozáshoz használt gazdagép és port kombináció helytelen lehet
  • A tűzfal blokkolhatja a kapcsolatokat meghatározott IP-címekről vagy portokról

3. A kivétel programozott befogása

A szerverhez általában programozottan kapcsolódunk a java.net.Socket osztály. A TCP-kapcsolat létrehozásához meg kell tennünk győződjön meg arról, hogy a megfelelő gazdagép és port kombinációhoz csatlakozunk:

String host = "localhost"; int port = 5000; próbáld ki a {Socket clientSocket = új Socket (gazdagép, port); // tegyen valamit a sikeresen megnyitott socket ügyfélSocket.close (); } catch (ConnectException e) {// gazdagép és port kombináció érvénytelen e.printStackTrace (); } catch (e kivétel) {e.printStackTrace (); }

Ha a gazdagép és a port kombinációja helytelen, Foglalat dobni fog a java.net.ConnectException. A fenti kódpéldánkban a verem nyomát kinyomtatjuk, hogy jobban megállapítsuk, mi a baj. A látható veremkövetés hiánya azt jelenti, hogy kódunk sikeresen csatlakozott a szerverhez.

Ebben az esetben a folytatás előtt ellenőriznünk kell a kapcsolat részleteit. Azt is ellenőriznünk kell, hogy a tűzfalunk nem akadályozza-e a kapcsolatot.

4. Kapcsolatok ellenőrzése a CLI-vel

A CLI segítségével megtehetjük használja a ping parancsot annak ellenőrzéséhez, hogy fut-e a kiszolgáló, amelyhez csatlakozni próbálunk.

Például ellenőrizhetjük, hogy a Baeldung szerver elindult-e:

ping baeldung.com

Ha a Baeldung szerver fut, akkor információkat kell látnunk az elküldött és fogadott csomagokról.

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

telnet egy másik hasznos CLI-eszköz, amellyel csatlakozhatunk egy megadott gazdagéphez vagy IP-címhez. Ezenkívül átadhatunk egy pontos portot is, amelyet tesztelni akarunk. Ellenkező esetben az alapértelmezett 23 port lesz használva.

Például, ha csatlakozni akarunk a Baeldung webhelyéhez a 80-as porton, akkor futtathatjuk:

telnet baeldung.com 80

Érdemes ezt megjegyezni ping és telnet a parancsok nem mindig működnek - még akkor sem, ha a kiszolgáló, amelyet elérni próbálunk, fut, és a megfelelő gazdagép és port kombinációt használjuk. Ez gyakran előfordul a termelési rendszerekben, amelyek általában erősen vannak biztonságban, hogy megakadályozzák az illetéktelen hozzáférést. Ezenkívül a meghibásodás másik oka lehet egy tűzfal, amely blokkolja az internetes forgalmat.

5. Következtetés

Ebben a gyors bemutatóban megvitattuk a közös Java hálózati kivételt, java.net.ConnectException.

A kivétel lehetséges okainak magyarázatával kezdtük. Megmutattuk, hogyan lehet programszerűen elkapni a kivételt, valamint két hasznos CLI-parancsot, amelyek segíthetnek az ok meghatározásában.

Mint mindig, az ebben a cikkben bemutatott kód elérhető a GitHubon.