Bagaimana Menerapkan metode InetAddress.isReachable(String address, int port, int timeout) Anda sendiri di Java?
Diterbitkan: 2020-10-06
Di Jawa ada beberapa cara untuk memeriksa ping dan pemeriksaan port. Anda dapat menggunakan perintah ping default sistem, utilitas InetAddress
metode asli Java, HttpURLConnection
dan banyak lagi.
Dalam produksi atau lingkungan pengujian Anda, jika Anda ingin melakukan beberapa pemeriksaan port, katakanlah ratusan pemeriksaan pada saat yang sama, terkadang metode InetAddress.isReachable()
tidak mendapatkan respons yang benar.
Menginfeksi dalam kasus saya, saya melihat kegagalan 100% saat mencoba terhubung ke www.google.com. Apakah Anda memiliki pertanyaan di bawah ini?
- java – Mengapa InetAddress.isReachable mengembalikan false, padahal saya bisa melakukan ping ke alamat IP?
- Bagaimana cara memeriksa apakah saya memiliki koneksi internet?
- Contoh Kode Java untuk java.net.InetAddress.isReachable()
- java periksa apakah alamat ip dapat dijangkau
- Bagaimana cara menguji apakah sistem jarak jauh dapat dijangkau?
Ikuti tutorial ini jika Anda ingin melakukan pemeriksaan ping menggunakan HttpURLConnection.openConnection()
Dalam tutorial ini kita akan membahas 2 cara berbeda untuk melakukan pemeriksaan Ping:
- Metode InetAddress.isReachable(batas waktu)
- Metode
crunchifyAddressReachable(host, port, timeout)
dari Crunchify yang bekerja 100% setiap saat
Mari kita mulai:
- Buat kelas CrunchifyInetAddressIsReachable.java.
- Kami akan membuat 2 metode pingCheckbyInetAddressisReachable() dan pingCheckbyCrunchifyisReachable() di mana kami akan melakukan di atas 2 tes yang berbeda.
Metode apa yang kita gunakan crunchifyAddressReachable()?
Kami menggunakan java.net.Socket
dalam implementasi kami. Kelas soket mengimplementasikan soket klien. Dengan bantuan utilitas connect()
kami mendapatkan hasil yang benar 100% dari waktu. Silakan lihat kode di bawah ini untuk lebih jelasnya.
CrunchifyInetAddressIsReachable.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
package crunchify . com . tutorial ; import java . io . IOException ; import java . net . InetAddress ; import java . net . InetSocketAddress ; import java . net . Socket ; /** * @author Crunchify.com * Problem: Sometimes InetAddress.isReachable() gives false result. * We have implemented the same Reachable check using Socket. It works almost 100% of the time. * Comparison added. * Version: 1.1 * */ public class CrunchifyInetAddressIsReachable { static String host = "www.google.com" ; public static void main ( String [ ] args ) { // check ping using default Java Utility pingCheckbyInetAddressisReachable ( ) ; // check ping using modified Crunchify Utility pingCheckbyCrunchifyisReachable ( ) ; } private static void pingCheckbyInetAddressisReachable ( ) { try { InetAddress crunchifyAddr = InetAddress . getByName ( host ) ; boolean reachable = crunchifyAddr . isReachable ( 2000 ) ; if ( reachable ) { System . out . println ( "InetAddress.isReachable(timeout) Result ==> Ping successful for host: " + host ) ; } else { System . out . println ( "InetAddress.isReachable(timeout) Result ==> Ping failed for host: " + host ) ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } } private static void pingCheckbyCrunchifyisReachable ( ) { try { crunchifyAddressReachable ( host , 80 , 2000 ) ; System . out . println ( "\nOverloaded isReachable(host, port, timeout) Result ==> Ping successful for host: " + host ) ; } catch ( Exception e ) { System . out . println ( "\nOverloaded isReachable(host, port, timeout) Result ==> Ping failed for host: " + host ) ; } } /* * Overriding default InetAddress.isReachable() method to add 2 more arguments port and timeout value * * Address: www.google.com * port: 80 or 443 * timeout: 2000 (in milliseconds) */ private static boolean crunchifyAddressReachable ( String address , int port , int timeout ) throws IOException { Socket crunchifySocket = new Socket ( ) ; try { // Connects this socket to the server with a specified timeout value. crunchifySocket . connect ( new InetSocketAddress ( address , port ) , timeout ) ; // Return true if connection successful return true ; } catch ( IOException exception ) { exception . printStackTrace ( ) ; // Return false if connection fails return false ; } finally { crunchifySocket . close ( ) ; } } } |
Setelah Anda menyalin kode ke lingkungan Eclipse, jalankan saja sebagai Aplikasi Java untuk melihat hasil di bawah ini.

Keluaran Konsol:
1 2 3 |
InetAddress . isReachable ( 2000 ) Result == > Ping failed for host : www . google . com Overloaded isReachable ( host , port , timeout ) Result == > Ping successful for host : www . google . com |