Artikel ini berbagi dengan Anda metode Java untuk menguji konektivitas jaringan untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Metode pertama: Gunakan runtime Java:
Kode Java
/** * Test Network * @param ip */private void getNetWorkState (string ip) {runtime runtime = runtime.getRuntime (); Coba {log.info ("=========================== Menguji Konektivitas Jaringan IP:"+IP); Proses proses = runtime.exec ("ping" +ip); InputStream istream = process.getInputStream (); InputStreamReader isReader = inputStreamReader baru (istream, "UTF-8"); BufferedReader Breader = BufferedReader baru (Isreader); Garis string = null; StringBuffer SB = StringBuffer baru (); while ((line = breader.readline ())! = null) {sb.append (line); } istream.close (); isreader.close (); breader.close (); String hasil = string baru (sb.toString (). GetBytes ("UTF-8")); log.info ("Hasil ping:"+hasil); if (! Stringutils.isBlank (hasil)) {if (result.indexof ("ttl")> 0 || result.indexof ("ttl")> 0) {log.info ("Jaringan normal, waktu:" + timeutil.getCurDate ("yyyyy-mm-dd hh: mm: ss"))) } else {log.info ("Jaringan terputus, waktu:" + timeutil.getCurdate ("yyyy-mm-dd hh: mm: ss")); }}} catch (Exception e) {log.error ("Pengecualian jaringan:"+e.getMessage ()); e.printstacktrace (); }} Pada platform Windows, kode di atas tidak digunakan, dan Ping IP akan berakhir. Namun, ketika perintah ping tidak bekerja di lingkungan Linux,
Ini akan macet, ping, dan informasi output dengan cara yang tidak pasti. Pertimbangkan untuk menggunakan cara lain untuk soket.
Cara kedua untuk soket:
Kode Java
Paket com.util.network; impor java.io.ioexception; impor java.net.inetaddress; impor java.net.inetsocketaddress; impor java.net.networkinterface; impor java.net.socket; impor java.net.socketaddress; java.net.socketException; import java.net.unknownhostexception; impor java.util.enumeration; impor org.apache.commons.lang.stringutils; impor org.slf4j.logger; impor org.slf4j.loggerfactory; Networkhelper {private static logger log = loggerFactory.getLogger (networkhelper.class); Private Static NetworkHelper Instance = null; public static sinkronisasi networkhelper getInstance () {if (instance == null) {instance = new networkhelper (); } return instance; } / ** * Uji apakah ping lokal ip * * @param ip * @return * / public boolean isreachip (string ip) {boolean isreach = false; coba {inetAddress address = inetaddress.getByName (ip); // ping ip if ini (alamat contoh dari java.net.inet4address) {log.info (ip + "adalah alamat ipv4"); } lain jika (alamat contoh dari java.net.inet6address) {log.info (ip + "adalah alamat ipv6"); } else {log.info (ip + "tidak direkrongis"); } if (address.isReachable (5000)) {isReach = true; log.info ("sukses - ping" + ip + "tanpa antarmuka yang ditentukan"); } else {isReach = false; log.info ("kegagalan - ping" + ip + "tanpa antarmuka yang ditentukan"); }} catch (Exception e) {log.error ("Kesalahan terjadi:" + e.getMessage ()); } kembalikan isReach; } / ** * Uji semua alamat kartu jaringan lokal untuk ping ip * * @param ip * @return * / public boolean isreachnetworkinterfaces (string ip) {boolean isreach = false; coba {inetAddress address = inetaddress.getByName (ip); // ping ip if ini (alamat contoh dari java.net.inet4address) {log.info (ip + "adalah alamat ipv4"); } lain jika (alamat contoh dari java.net.inet6address) {log.info (ip + "adalah alamat ipv6"); } else {log.info (ip + "tidak direkrongis"); } if (address.isReachable (5000)) {isReach = true; log.info ("sukses - ping" + ip + "tanpa antarmuka yang ditentukan"); } else {isReach = false; log.info ("kegagalan - ping" + ip + "tanpa antarmuka yang ditentukan"); } if (isReach) {log.info ("----------------"); Enumeration <NetworkInterface> NetInterfaces = NetworkInterface .GetNetWorkInterFaces (); while (netInterfaces.hasmoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); log.info ("Memeriksa Antarmuka, DisplayName:" + ni.getDisplayName () + ", nama:" + ni.getname ()); if (address.isreachable (ni, 0, 5000)) {isReach = true; log.info ("Sukses - Ping" + IP); } else {isReach = false; log.info ("kegagalan - ping" + ip); } Enumeration <InetAddress> ips = ni.getInetAddresses (); while (ips.hasmoreElements ()) {log.info ("ip:" + ips.nextElement (). gethostaddress ()); } log.info ("----------------- Periksa sekarang NetworkInterface selesai --------------------------"); }}} catch (exception e) {log.error ("kesalahan terjadi:" + e.getMessage ()); } kembalikan isReach; } / ** * Dapatkan alamat IP asli yang dapat membuat koneksi ke port yang ditentukan dari host jarak jauh * @param remoteaddr * @param port * @return * / public string getReachableIp (inetaddress remoteaddr, int port) {string retip = null; Enumeration <NetworkInterface> NetInterfaces; coba {netInterfaces = networkInterface.getNetworkInterfaces (); while (netInterfaces.hasmoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); Enumeration <inetaddress> localaddrs = ni.getInetaddresses (); while (localaddrs.hasmoreElements ()) {inetaddress localaddr = localaddrs.nextElement (); if (isReachable (localaddr, remoteaddr, port, 5000)) {retip = localaddr.gethostaddress (); merusak; }}}} catch (socketException e) {log.error ("Terjadi kesalahan saat mendaftar semua alamat jaringan lokal:" + e.getMessage ()); } if (recip == null) {log.info ("NULL yang dapat dijangkau IP lokal ditemukan!"); } else {log.info ("IP lokal yang dapat dijangkau ditemukan, itu adalah" + rias); } return RETIP; } / ** * Dapatkan alamat IP asli yang dapat membuat koneksi dengan port yang ditentukan dari host jarak jauh * @param remoteip * @param port * @return * / public string getReachableIp (string remoteip, int port) {string REPIP = null; Inetaddress remoteAddr = null; Enumeration <NetworkInterface> NetInterfaces; coba {remoteAddr = inetAddress.getByName (remoteip); netInterfaces = networkInterface.getNetworkInterfaces (); while (netInterfaces.hasmoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); Enumeration <inetaddress> localaddrs = ni.getInetaddresses (); while (localaddrs.hasmoreElements ()) {inetaddress localaddr = localaddrs.nextElement (); if (isReachable (localaddr, remoteaddr, port, 5000)) {retip = localaddr.gethostaddress (); merusak; }}}} catch (unknownHostException e) {log.error ("Terjadi kesalahan saat mendaftar semua alamat jaringan lokal:"+ e.getMessage ()); } catch (SocketException e) {log.error ("Terjadi kesalahan saat mendaftar semua alamat jaringan lokal:"+ e.getMessage ()); } if (recip == null) {log.info ("NULL yang dapat dijangkau IP lokal ditemukan!"); } else {log.info ("IP lokal yang dapat dijangkau ditemukan, itu adalah" + rias); } return RETIP; } / ** * Uji apakah LocalInetAddr dapat membuat koneksi dengan port yang ditentukan host jarak jauh * * @param localInetaddr * @param remoteinetaddr * @param port * @param timeout * @return * / boolean portabable (inetaddress localetaddr, inetaddress remoteTaddr, inetaddress oToLETADDR, inetaddress remoteineN; Soket soket = null; coba {socket = socket baru (); // Atur nomor port ke 0 untuk menunjukkan bahwa Anda memilih port yang tersedia secara lokal untuk koneksi. Socketaddress localsocketaddr = inetsocketaddress baru (localInetaddr, 0); socket.bind (localsocketaddr); Inetsocketaddress endpointsocketaddr = inetsocketAddress baru (RemoteinetAddr, port); socket.connect (endpointsocketaddr, timeout); log.info ("Sukses - Koneksi Didirikan! Lokal:" + LocalInetAddr.GetHostAddress () + "Remote:" + Remoteinetaddr.GetHostAddress () + "Port" + Port); isReachable = true; } catch (ioException e) {log.error ("failre - tidak dapat menghubungkan! Lokal:" + localetaddr.gethostaddress () + "jarak jauh:" + remoteineTaddr.getHostAddress () + "port" + port); } akhirnya {if (socket! = null) {coba {socket.close (); } catch (ioException e) {log.error ("Terjadi kesalahan saat menutup soket:" + e.getMessage ()); }}} returnable; } / ** * Uji apakah localip dapat membuat koneksi dengan port yang ditentukan host jarak jauh * * @param localip * @param remoteip * @param port * @param timeout * @return * / public boolean isReachable (string localip, string remoteip, int port, int timeout) {boolean isreachable = falseP; string; Soket soket = null; Inetaddress localInetaddr = null; Inetaddress remoteinetaddr = null; coba {localetaddr = inetaddress.getbyname (localip); RemoteinetAddr = inetaddress.getByName (remoteip); soket = soket baru (); // Atur nomor port ke 0 untuk menunjukkan bahwa Anda memilih port yang tersedia secara lokal untuk koneksi. Socketaddress localsocketaddr = inetsocketaddress baru (localInetaddr, 0); socket.bind (localsocketaddr); Inetsocketaddress endpointsocketaddr = inetsocketAddress baru (RemoteinetAddr, port); socket.connect (endpointsocketaddr, timeout); log.info ("Sukses - Koneksi Didirikan! Lokal:" + LocalInetAddr.GetHostAddress () + "Remote:" + Remoteinetaddr.GetHostAddress () + "Port" + Port); isReachable = true; } catch (ioException e) {log.error ("failre - tidak dapat menghubungkan! Lokal:" + localetaddr.gethostaddress () + "jarak jauh:" + remoteineTaddr.getHostAddress () + "port" + port); } akhirnya {if (socket! = null) {coba {socket.close (); } catch (ioException e) {log.error ("Terjadi kesalahan saat menutup soket:" + e.getMessage ()); }}} returnable; } public static void main (string [] args) {if (networkhelper.getInstance (). isReachip ("192.168.126.128")) {log.info ("======= Native dapat ping IP:"+"192.168.126.128"); } else {log.info ("========= Ping asli tidak ping IP:"+"192.168.126.128"); } if (networkhelper.getInstance (). isReachNetworkInterfaces ("192.168.126.128"))) {log.info ("========== semua kartu jaringan dalam mesin dapat melakukan ping:"+"192.168.126.128"); } else {log.info ("======== Semua kartu jaringan di mesin tidak dapat melakukan ping pada IP:"+"192.168.126.128"); } String localip = networkhelper.getInstance (). GetReachableIp ("192.168.126.128", 8081); if (! Stringutils.isBlank (localip)) {log.info ("========= Mesin asli dapat membuat IP untuk koneksi dengan IP:"+"192.168.126.128"+", port:"+8081+ ":"+localip); } else {log.info ("======= Mesin asli tidak dapat membuat IP untuk koneksi dengan IP:"+"192.168.126.128"+", port:"+8081+ ""); }}} Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.