Menangani java.net.ConnectException

1. Perkenalan

Dalam tutorial singkat ini, kita akan membahas beberapa kemungkinan penyebab java.net.ConnectException . Kemudian, kami akan menunjukkan cara memeriksa koneksi dengan bantuan dua perintah yang tersedia untuk umum dan contoh Java kecil.

2. Apa Penyebab java.net.ConnectException

The java.net.ConnectException pengecualian adalah salah satu pengecualian Jawa yang paling umum yang terkait dengan jaringan. Kami mungkin menemukannya saat kami membuat koneksi TCP dari aplikasi klien ke server. Karena ini adalah pengecualian yang dicentang, kita harus menanganinya dengan benar dalam kode kita di blok coba-tangkap .

Ada banyak kemungkinan penyebab pengecualian ini:

  • Server yang kami coba sambungkan belum dimulai, oleh karena itu, kami tidak dapat memperoleh koneksi
  • Kombinasi host dan port yang kami gunakan untuk menyambung ke server mungkin salah
  • Firewall mungkin memblokir koneksi dari alamat atau port IP tertentu

3. Menangkap Pengecualian Secara Terprogram

Kami biasanya terhubung ke server secara terprogram menggunakan kelas java.net.Socket . Untuk membuat koneksi TCP, kita harus memastikan kita terhubung ke host yang benar dan kombinasi port:

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

Jika kombinasi host dan port salah, Socket akan menampilkan java.net.ConnectException. Dalam contoh kode kami di atas, kami mencetak pelacakan tumpukan untuk lebih menentukan apa yang salah. Tidak ada jejak tumpukan yang terlihat berarti kode kita berhasil terhubung ke server.

Dalam hal ini, kami harus memeriksa detail koneksi sebelum melanjutkan. Kami juga harus memeriksa apakah firewall kami tidak mencegah koneksi.

4. Memeriksa Koneksi Dengan CLI

Melalui CLI, kita dapat menggunakan perintah ping untuk memeriksa apakah server yang kita coba sambungkan sedang berjalan .

Misalnya, kami dapat memeriksa apakah server Baeldung telah dimulai:

ping baeldung.com

Jika server Baeldung sedang berjalan, kita akan melihat informasi tentang paket yang dikirim 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 berguna lainnya yang dapat kita gunakan untuk terhubung ke host atau alamat IP tertentu. Selain itu, kami juga dapat mengirimkan port yang ingin kami uji. Jika tidak, port default 23 akan digunakan.

Misalnya, jika kita ingin terhubung ke situs Baeldung pada port 80, kita dapat menjalankan:

telnet baeldung.com 80

Perlu dicatat bahwa perintah ping dan telnet mungkin tidak selalu berfungsi - bahkan jika server yang kami coba jangkau sedang berjalan dan kami menggunakan kombinasi host dan port yang benar. Ini sering terjadi dalam sistem produksi, yang biasanya sangat diamankan untuk mencegah akses yang tidak sah. Selain itu, firewall yang memblokir lalu lintas internet tertentu mungkin menjadi penyebab kegagalan lainnya.

5. Kesimpulan

Dalam tutorial singkat ini, kita telah membahas pengecualian umum jaringan Java, java.net.ConnectException .

Kami mulai dengan penjelasan tentang kemungkinan penyebab pengecualian itu. Kami menunjukkan cara menangkap pengecualian secara terprogram, bersama dengan dua perintah CLI yang berguna yang mungkin membantu untuk menentukan penyebabnya.

Seperti biasa, kode yang ditampilkan dalam artikel ini tersedia di GitHub.