تشارك هذه المقالة معك طريقة Java لاختبار اتصال الشبكة للرجوع إليها. المحتوى المحدد كما يلي
الطريقة الأولى: استخدم وقت تشغيل Java:
كود جافا
/** * شبكة اختبار * param ip */private void getNetworkState (string ip) {runtime runtime = runtime.getRuntime () ؛ حاول {log.info ("=========================== اختبار اتصال الشبكة IP:"+IP) ؛ عملية العملية = Runtime.exec ("ping" +IP) ؛ inputStream isTream = process.getInputStream () ؛ inputStreamReader isReader = new inputStreamReader (isTream ، "UTF-8") ؛ bufferrederer quarer = جديد bufferedreader (isReader) ؛ خط السلسلة = فارغ ؛ StringBuffer SB = New StringBuffer () ؛ بينما ((line = quider.readline ())! = null) {sb.append (line) ؛ } isTream.close () ؛ isReader.Close () ؛ Quarer.Close () ؛ سلسلة السلسلة = سلسلة جديدة (sb.toString (). getBytes ("UTF-8")) ؛ log.info ("نتيجة ping:"+نتيجة) ؛ if (! stringUtils.isblank (result)) {if (result.indexof ("ttl")> 0 || result.indexof ("ttl")> 0) {log.info ("الشبكة طبيعية ، الوقت: } else {log.info ("شبكة منفصلة ، الوقت:" + timeUtil.getCurdate ("Yyyy-MM-DD HH: MM: SS")) ؛ }}} catch (استثناء e) {log.error ("استثناء الشبكة:"+e.getMessage ()) ؛ E.PrintStackTrace () ؛ }} على نظام Windows ، لا يتم استخدام الكود أعلاه ، وسينتهي Ping IP. ومع ذلك ، عندما لا يعمل أمر ping في بيئة Linux ،
سيكون عالقًا ، معلومات ، وإخراج المعلومات بطرق غير مؤكدة. النظر في استخدام طريقة أخرى للمقبس.
الطريقة الثانية للمقبس:
كود جافا
package com.util.network ؛ import java.io.ioException ؛ import java.net.inetaddress ؛ import java.net.inetsocketaddress ؛ import java.net.networkinterface ؛ import java.net.socket ؛ import java.net.socketaddress ؛ kava.net.unknownhostexception ؛ استيراد java.util.enumeration ؛ استيراد org.apache.commons.lang.stringutils ؛ استيراد org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛/** * الاختبار * loggerfactory.getLogger (NetworkHelper.class) ؛ مثيل NetworkHelper ثابت الخاص = فارغ ؛ public static static networkhelper getInstance () {if (مثيل == null) {مثيل = new NetworkHelper () ؛ } مثيل الإرجاع ؛ } / ** * اختبار ما إذا كان ping ping ip * * param ip * @return * / public boolean isReachip (string ip) {boolean isReach = false ؛ حاول {inetaddress address = inetaddress.getByName (IP) ؛ // ping هذا IP if (address extryof java.net.inet4address) {log.info (IP + "هو عنوان IPv4") ؛ } if if (address electionof java.net.inet6Address) {log.info (IP + "IS IPv6") ؛ } آخر {log.info (IP + "غير محدد") ؛ } if (address.isreachable (5000)) {isReach = true ؛ log.info ("Success - ping" + IP + "بدون واجهة محددة") ؛ } آخر {isreach = false ؛ log.info ("failure - ping" + ip + "بدون واجهة محددة") ؛ }} catch (استثناء e) {log.error ("يحدث الخطأ:" + e.getMessage ()) ؛ } إرجاع isreach ؛ } / ** * اختبر جميع عناوين بطاقة الشبكة المحلية ل ping ip * * param ip * @return * / public boolean isReachNetworkInterfaces (string ip) {boolean isreach = false ؛ حاول {inetaddress address = inetaddress.getByName (IP) ؛ // ping هذا IP if (address extryof java.net.inet4address) {log.info (IP + "هو عنوان IPv4") ؛ } if if (address electionof java.net.inet6Address) {log.info (IP + "IS IPv6") ؛ } آخر {log.info (IP + "غير محدد") ؛ } if (address.isreachable (5000)) {isReach = true ؛ log.info ("Success - ping" + IP + "بدون واجهة محددة") ؛ } آخر {isreach = false ؛ log.info ("failure - ping" + ip + "بدون واجهة محددة") ؛ } if (isReach) {log.info ("----------------") ؛ التعداد <NetworkInterface> netInterFaces = NetworkInterface .getNetworkInterFaces () ؛ بينما (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.nextElement () ؛ log.info ("checking interface ، displayName:" + ni.getDisplayName () + "، name:" + ni.getName ()) ؛ if (address.isreachable (ni ، 0 ، 5000)) {isreach = true ؛ log.info ("النجاح - ping" + IP) ؛ } آخر {isreach = false ؛ log.info ("failure - ping" + ip) ؛ } التعداد <InetAddress> ips = ni.getInetAddresses () ؛ بينما (ips.hasmoreElements ()) {log.info ("ip:" + ips.nextElement (). gethostaddress ()) ؛ } log.info ("----------------- تحقق الآن من NetworkIndFace ----------------------------") ؛ }}} catch (استثناء e) {log.error ("يحدث الخطأ:" + e.getMessage ()) ؛ } إرجاع isreach ؛ } / ** * احصل على عنوان IP الأصلي الذي يمكنه إنشاء اتصال إلى المنفذ المحدد للمضيف عن بُعد * param remoteaddr * param port * regurn * / public string getReachable (inetaddress remoteaddr ، int port) {String Retip = null ؛ التعداد <NetworkInterface> netInterfaces ؛ حاول {netInterfaces = networkInterface.getNetworkInterFaces () ؛ بينما (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.nextElement () ؛ التعداد <InetAddress> localaddrs = ni.getInetAddresses () ؛ بينما (localaddrs.hasmoreElements ()) {inetaddress localaddr = localAddRs.NextElement () ؛ if (isReachable (localaddr ، remoteaddr ، port ، 5000)) {retip = localaddr.gethostaddress () ؛ استراحة؛ }}}} catch (SocketException e) {log.error ("حدث خطأ أثناء سرد جميع عناوين الشبكة المحلية:" + E.GetMessage ()) ؛ } if (retip == null) {log.info ("تم العثور على IP المحلي القابل للوصول إلى فارغ!") ؛ } آخر {log.info ("تم العثور على IP المحلي القابل للوصول ، إنه" + retip) ؛ } retip retip ؛ } / ** * احصل على عنوان IP الأصلي الذي يمكنه إنشاء اتصال مع المنفذ المحدد للمضيف البعيد * param remoteip * param port * regurn * / public string getReachable (string remoteip ، int port) {String Retip = null ؛ inetaddress remoteaddr = null ؛ التعداد <NetworkInterface> netInterfaces ؛ حاول {remoteaddr = inetaddress.getByName (Remoteip) ؛ netInterFaces = networkIndFace.getNetworkInterFaces () ؛ بينما (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.nextElement () ؛ التعداد <InetAddress> localaddrs = ni.getInetAddresses () ؛ بينما (localaddrs.hasmoreElements ()) {inetaddress localaddr = localAddRs.NextElement () ؛ if (isReachable (localaddr ، remoteaddr ، port ، 5000)) {retip = localaddr.gethostaddress () ؛ استراحة؛ }}}} catch (unknownhostexception e) {log.error ("حدث خطأ أثناء سرد جميع عناوين الشبكة المحلية:"+ e.getMessage ()) ؛ } catch (socketException e) {log.error ("حدث خطأ أثناء سرد جميع عناوين الشبكة المحلية:"+ E.GetMessage ()) ؛ } if (retip == null) {log.info ("تم العثور على IP المحلي القابل للوصول إلى فارغ!") ؛ } آخر {log.info ("تم العثور على IP المحلي القابل للوصول ، إنه" + retip) ؛ } retip retip ؛ } / ** * اختبار ما إذا كان يمكن لـ LocalInetAddr إنشاء اتصال مع المضيف البعيد المنفذ المحدد * * param localinetaddr * param remoteinetaddr * param port * @param timeout * regurn * / public boolean isReachable (inetaddress localinetaddr ، inetaddressdressdreddr repoated ، مقبس المقبس = فارغ ؛ حاول {socket = new Socket () ؛ // قم بتعيين رقم المنفذ إلى 0 للإشارة إلى أنك تحدد منفذًا متاحًا محليًا للاتصال. socketaddress alcalsocketaddr = new inetsocketaddress (localinetaddr ، 0) ؛ Socket.bind (OcalsocketAddr) ؛ inetsocketaddress endpointSocketAddr = new inetsocketaddress (RemoteInetaddr ، port) ؛ Socket.connect (EndPointSocketAddr ، timeout) ؛ log.info ("Success - Connection local! local:" + localinetadd.gethostaddress () + "Remote:" + RemoteInetAddr.gethostaddress () + "port" + port) ؛ isReachable = صحيح ؛ } catch (ioException e) {log.error ("failre - لا يمكن الاتصال! local:" + localinetaddr.gethostaddress () + "Remote:" + RemoteInetAddr.gethostaddress () + "port" + port) ؛ } أخيرًا {if (socket! = null) {try {socket.close () ؛ } catch (ioException e) {log.error ("حدث خطأ أثناء إغلاق المقبس:" + E.GetMessage ()) ؛ }}} return isReachable ؛ } / ** * اختبار ما إذا كان يمكن لـ LocalIP إنشاء اتصال مع المضيف عن بُعد المنفذ المحدد * * param localip * param remoteip * param port * param timeout * @return * / public boolean isReachable (String localip ، string remoteip ، int timeout) {boolean isReachable = false ؛ مقبس المقبس = فارغ ؛ inetaddress localinetaddr = null ؛ inetaddress remoteinetaddr = null ؛ حاول {localinetaddr = inetaddress.getByName (localip) ؛ RemoteInetAddr = inetaddress.getByName (Remoteip) ؛ مقبس = مقبس جديد () ؛ // قم بتعيين رقم المنفذ إلى 0 للإشارة إلى أنك تحدد منفذًا متاحًا محليًا للاتصال. socketaddress alcalsocketaddr = new inetsocketaddress (localinetaddr ، 0) ؛ Socket.bind (OcalsocketAddr) ؛ inetsocketaddress endpointSocketAddr = new inetsocketaddress (RemoteInetaddr ، port) ؛ Socket.connect (EndPointSocketAddr ، timeout) ؛ log.info ("Success - Connection local! local:" + localinetadd.gethostaddress () + "Remote:" + RemoteInetAddr.gethostaddress () + "port" + port) ؛ isReachable = صحيح ؛ } catch (ioException e) {log.error ("failre - لا يمكن الاتصال! local:" + localinetaddr.gethostaddress () + "Remote:" + RemoteInetAddr.gethostaddress () + "port" + port) ؛ } أخيرًا {if (socket! = null) {try {socket.close () ؛ } catch (ioException e) {log.error ("حدث خطأ أثناء إغلاق المقبس:" + E.GetMessage ()) ؛ }}} return isReachable ؛ } public static void main (string [] args) {if (NetworkHelper.getInstance (). isReachip ("192.168.126.128")) {log.info ("======== Can Ping the IP:"+"192.168.126.128") ؛ } else {log.info ("========== لا يقوم الأصلي ping لا ping the ip:"+"192.168.126.128") ؛ } if (networkhelper.getInstance (). isReachNetworkInterFaces ("192.168.126.128")))) {log.info ("========== جميع بطاقات الشبكة في الجهاز يمكنها ping the ip:"+"192.168.126.128") ؛ } else {log.info ("========= لا يمكن لجميع بطاقات الشبكة في الجهاز تثبيت IP:"+"192.168.126.128") ؛ } string localip = networkhelper.getInstance (). getReachableIP ("192.168.126.128" ، 8081) ؛ if (! stringUtils.isblank (localip)) {log.info ("========= جهاز الأصلي يمكنه إنشاء IP للتواصل مع IP:"+"192.168.126.128"+"، المنفذ:"+8081+ ":"+localip) ؛ } آخر {log.info ("======= لا يمكن للآلة الأصلية إنشاء IP للتواصل مع IP:"+"192.168.126.128"+"، المنفذ:"+8081+ "") ؛ }}} ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.