Spracovanie java.net.ConnectException
1. Úvod
V tomto rýchlom návode si ukážeme niektoré možné príčiny java.net.ConnectException. Potom si ukážeme, ako skontrolovať pripojenie pomocou dvoch verejne dostupných príkazov a malého príkladu Java.
2. Čo spôsobuje java.net.ConnectException
The java.net.ConnectException výnimka je jednou z najbežnejších výnimiek Java týkajúcich sa sietí. Môžeme sa s tým stretnúť, keď nadväzujeme TCP spojenie z klientskej aplikácie na server. Pretože ide o kontrolovanú výnimku, mali by sme ju v našom kóde správne spracovať v a Skús chytiť blokovať.
Existuje mnoho možných príčin tejto výnimky:
- Server, ku ktorému sa pokúšame pripojiť, sa jednoducho nespustí, a preto ho nemôžeme získať
- Kombinácia hostiteľa a portu, ktorú používame na pripojenie k serveru, môže byť nesprávna
- Brána firewall môže blokovať pripojenia z konkrétnych adries IP alebo portov
3. Chytanie výnimky programovo
K serveru sa obvykle pripájame programovo pomocou java.net.Socket trieda. Aby sme mohli nadviazať TCP spojenie, musíme uistite sa, že sa pripájame k správnej kombinácii hostiteľa a portu:
Reťazec hostiteľ = "localhost"; int port = 5000; try {Socket clientSocket = new Socket (host, port); // urob niečo s úspešne otvoreným soketom clientSocket.close (); } catch (ConnectException e) {// kombinácia hostiteľa a portu nie je platná e.printStackTrace (); } catch (Výnimka e) {e.printStackTrace (); }
Ak je kombinácia hostiteľa a portu nesprávna, Zásuvka bude hádzať a java.net.ConnectException. V našom príklade kódu vyššie vytlačíme trasovanie zásobníka, aby sme lepšie určili, čo sa deje. Žiadne viditeľné sledovanie zásobníka znamená, že náš kód sa úspešne pripojil k serveru.
V takom prípade by sme mali predtým, ako budeme pokračovať, skontrolovať podrobnosti pripojenia. Mali by sme tiež skontrolovať, či náš firewall nebráni pripojeniu.
4. Kontrola pripojení pomocou CLI
Prostredníctvom CLI môžeme Použi ping príkaz na kontrolu, či je server, ku ktorému sa pokúšame pripojiť, spustený.
Môžeme napríklad skontrolovať, či je spustený server Baeldung:
ping baeldung.com
Ak je spustený server Baeldung, mali by sme vidieť informácie o odoslaných a prijatých balíkoch.
PING baeldung.com (104.18.63.78): 56 dátových bajtov 64 bajtov od 104.18.63.78: icmp_seq = 0 ttl = 57 čas = 7 648 ms 64 bajtov od 104.18.63.78: icmp_seq = 1 ttl = 57 čas = 14,493 ms
telnet je ďalší užitočný nástroj CLI, ktorý môžeme použiť na pripojenie k zadanému hostiteľovi alebo adrese IP. Ďalej môžeme odovzdať aj presný port, ktorý chceme otestovať. V opačnom prípade sa použije predvolený port 23.
Napríklad, ak sa chceme pripojiť na webovú stránku Baeldung na porte 80, môžeme spustiť:
telnet baeldung.com 80
Stojí za zmienku, že ping a telnet príkazy nemusia vždy fungovať - aj keď je server, na ktorý sa pokúšame dostať, spustený a používame správnu kombináciu hostiteľa a portu. To sa často stáva vo výrobných systémoch, ktoré sú zvyčajne veľmi zabezpečené, aby sa zabránilo neoprávnenému prístupu. Okrem toho môže byť ďalšou príčinou zlyhania brána firewall blokujúca konkrétny internetový prenos.
5. Záver
V tomto rýchlom výučbe sme diskutovali o spoločnej sieťovej výnimke Java, java.net.ConnectException.
Začali sme vysvetlením možných príčin tejto výnimky. Ukázali sme, ako programovo zachytiť výnimku, spolu s dvoma užitočnými príkazmi CLI, ktoré by mohli pomôcť určiť príčinu.
Ako vždy, kód zobrazený v tomto článku je k dispozícii na GitHub.