Mengendalikan java.net.ConnectException

1. Pengenalan

Dalam tutorial ringkas ini, kita akan membincangkan beberapa kemungkinan penyebab java.net.ConnectException . Kemudian, kami akan menunjukkan cara memeriksa sambungan dengan bantuan dua arahan yang tersedia untuk umum dan contoh kecil Java.

2. Apa yang Menyebabkan java.net.ConnectException

The java.net.ConnectException pengecualian adalah salah satu daripada Java pengecualian yang paling biasa yang berkaitan dengan rangkaian. Kami mungkin menghadapinya ketika kami membuat sambungan TCP dari aplikasi klien ke pelayan. Oleh kerana ini adalah pengecualian yang diperiksa, kita harus mengatasinya dengan betul dalam kod kita dalam blok cubaan tangkapan .

Terdapat banyak kemungkinan penyebab pengecualian ini:

  • Pelayan yang kami cuba sambungkan tidak dimulakan, oleh itu, kami tidak dapat memperoleh sambungan
  • Gabungan host dan port yang kami gunakan untuk menyambung ke pelayan mungkin tidak betul
  • Firewall mungkin menyekat sambungan dari alamat atau port IP tertentu

3. Menangkap Pengecualian Secara Berprogram

Kami biasanya menyambung ke pelayan secara teratur menggunakan kelas java.net.Socket . Untuk mewujudkan sambungan TCP, kita mesti memastikan bahawa kita menyambung ke kombinasi host dan port yang betul:

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

Sekiranya gabungan host dan port tidak betul, Socket akan membuang java.net.ConnectException. Dalam contoh kod kami di atas, kami mencetak jejak timbunan untuk menentukan apa yang salah. Tiada jejak timbunan yang kelihatan bermakna bahawa kod kami berjaya disambungkan ke pelayan.

Dalam kes ini, kita harus memeriksa perincian sambungan sebelum meneruskan. Kita juga harus memeriksa bahawa firewall kita tidak menghalang sambungan.

4. Memeriksa Sambungan Dengan CLI

Melalui CLI, kita dapat menggunakan perintah ping untuk memeriksa sama ada pelayan yang ingin kita sambungkan sedang berjalan .

Sebagai contoh, kita dapat memeriksa sama ada pelayan Baeldung dimulakan:

ping baeldung.com

Sekiranya pelayan Baeldung sedang berjalan, kita akan melihat maklumat mengenai pakej yang dihantar dan diterima.

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 adalah alat CLI lain yang berguna yang boleh kita gunakan untuk menyambung ke hos atau alamat IP yang ditentukan. Selain itu, kita juga dapat melewati port tepat yang ingin kita uji. Jika tidak, port 23 akan digunakan.

Sebagai contoh, jika kita ingin menyambung ke laman web Baeldung di port 80, kita boleh menjalankan:

telnet baeldung.com 80

Perlu diingat bahawa arahan ping dan telnet mungkin tidak selalu berfungsi - walaupun pelayan yang ingin kita capai sedang berjalan dan kita menggunakan kombinasi hos dan port yang betul. Ini sering berlaku dalam sistem pengeluaran, yang biasanya sangat aman untuk mencegah akses yang tidak sah. Selain itu, firewall yang menyekat lalu lintas internet tertentu mungkin menjadi penyebab kegagalan lain.

5. Kesimpulan

Dalam tutorial ringkas ini, kami telah membincangkan pengecualian rangkaian Java yang biasa, java.net.ConnectException .

Kami memulakan dengan penjelasan mengenai kemungkinan penyebab pengecualian itu. Kami menunjukkan cara untuk mendapatkan pengecualian secara terprogram, bersama dua perintah CLI yang berguna yang dapat membantu menentukan penyebabnya.

Seperti biasa, kod yang ditunjukkan dalam artikel ini terdapat di GitHub.