この記事では、参照のネットワーク接続をテストするJavaメソッドを共有しています。特定のコンテンツは次のとおりです
最初の方法:Javaランタイムを使用します:
Javaコード
/** *テストネットワーク * @param ip */private void getnetworkstate(string ip){runtime runtime = runtime.getRuntime(); try {log.info( "=================================================================="+IP);プロセスプロセス= runtime.exec( "ping" +ip); inputstream iStream = process.getInputStream(); inputStreamReader isReader = new inputStreamReader(iStream、 "utf-8"); BufferedReader Breader = new BufferedReader(IsReader);文字列line = null; stringbuffer sb = new StringBuffer(); while((line = breader.readline())!= null){sb.append(line); } iStream.close(); isreader.close(); Breader.close(); string result = new String(sb.toString()。getBytes( "utf-8")); log.info( "ping result:"+result); if(!stringutils.isblank(result)){if(result.indexof( "ttl")> 0 || result.indexof( "ttl")> 0){log.info( "ネットワークは通常、時間:" + tymutil.getcurdate( "yyyy-mm-dd hh:mm:ss"); } else {log.info( "ネットワークは切断されます、time:" + tamputil.getcurdate( "yyyy-mm-dd hh:mm:ss")); }}} catch(Exception e){log.Error( "ネットワーク例外:"+e.getMessage()); e.printstacktrace(); }} Windowsプラットフォームでは、上記のコードは使用されず、Ping IPは終了します。ただし、PingコマンドがLinux環境で機能していない場合、
不確実な方法で情報が詰まって、ping、および出力されます。ソケットに別の方法を使用することを検討してください。
ソケットの2番目の方法:
Javaコード
パッケージcom.util.network;インポートjava.io.ioexception; import java.net.inetAddress; import java.net.inetsocketAddress;インポートjava.net.networkinterface; import java.net.socket; import java.net.socketadress; import docket.net.socketadress. java.net.unknownhostexception; Import java.util.enumeration; Import org.apache.commons.lang.stringutils; Import org.slf4j.logger; import org.slf4j.loggeractory;/** *テストネットワーク接続 * * @authorドナルド */パブリッククラスログログ=プライベートログ=プライベートloggerfactory.getLogger(networkhelper.class); private static networkhelperインスタンス= null; public static synchronized networkhelper getInstance(){if(instance == null){instance = new NetworkHelper(); } returnインスタンス; } / ** *ローカルPing IP * * @param ip * @return * / public boolean isreachip(string ip){boolean isreach = false; try {inetAddressアドレス= inetAddress.getByName(IP); //このIPをping if(address instanceof java.net.inet4Address){log.info(ip + "is ipv4 address"); } else if(address instanceof java.net.inet6address){log.info(ip + "is ipv6アドレス"); } else {log.info(ip + "is remongized"); } if(address.isreachable(5000)){isreach = true; log.info( "success -ping" + ip + "インターフェイスが指定されていない"); } else {isreach = false; log.info( "fails -ping" + ip + "インターフェイスが指定されていない"); }} catch(例外e){log.error( "エラーが発生する:" + e.getmessage()); } ISREACHを返します。 } / ** *すべてのローカルネットワークカードアドレスをテストしてip * * @param ip * @return * / public boolean isreachnetworkinterfaces(string ip){boolean isreach = false; try {inetAddressアドレス= inetAddress.getByName(IP); //このIPをping if(address instanceof java.net.inet4Address){log.info(ip + "is ipv4 address"); } else if(address instanceof java.net.inet6address){log.info(ip + "is ipv6アドレス"); } else {log.info(ip + "is remongized"); } if(address.isreachable(5000)){isreach = true; log.info( "success -ping" + ip + "インターフェイスが指定されていない"); } else {isreach = false; log.info( "fails -ping" + ip + "インターフェイスが指定されていない"); } if(isreach){log.info( "--------------"); enumeration <NetworkInterface> netInterfaces = networkInterface .getNetWorkInterFaces(); while(netInterfaces.hasMoreElements()){networkInterface ni = netInterfaces.nextElement(); log.info( "interface、displayNameのチェック:" + ni.getDisplayName() + "、name:" + ni.getName()); if(address.isreachable(ni、0、5000)){isreach = true; log.info( "success -ping" + ip); } else {isreach = false; log.info( "fails -ping" + ip); } enumeration <InetAddress> ips = ni.getinetAddresses(); while(ips.hasmoreElements()){log.info( "ip:" + ips.nextelement()。gethostaddress()); } log.info( "-----------------チェック今すぐチェックネットワークインターフェイスが完了します-------------------------"); }}} catch(Exception E){log.Error( "エラーが発生する:" + e.getMessage()); } ISREACHを返します。 } / ** *リモートホストの指定されたポートへの接続を確立できるネイティブIPアドレスを取得します * @param Remoteaddr * @param Port * @return * / public String getReachableIp(inetAddress Remoteaddr、int port){string retip = null;列挙<NetworkInterface> netInterfaces; try {netInterfaces = networkInterface.getNetWorkInterFaces(); while(netInterfaces.hasMoreElements()){networkInterface ni = netInterfaces.nextElement();列挙<inetaddress> localaddrs = ni.getinetAddresses(); while(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( "null Reachable Local IPが見つかりました!"); } else {log.info( "ReachableローカルIPが見つかりました、それは" + retip); } retipを返します。 } / ** *リモートホストの指定されたポートとの接続を確立できるネイティブIPアドレスを取得します * @param remoteip * @param port * / public string getReachableIp(string remoteip、int port){string retip = null; InetAddress RemoteadDr = null;列挙<NetworkInterface> netInterfaces; try {Remoteaddr = inetAddress.getByname(remoteIp); netInterfaces = networkInterface.getNetWorkInterFaces(); while(netInterfaces.hasMoreElements()){networkInterface ni = netInterfaces.nextElement();列挙<inetaddress> localaddrs = ni.getinetAddresses(); while(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( "null Reachable Local IPが見つかりました!"); } else {log.info( "ReachableローカルIPが見つかりました、それは" + retip); } retipを返します。 } / ** * locialinetaddrがリモートホストと接続できるかどうかをテストします。ソケットソケット= null; try {socket = new Socket(); //ポート番号を0に設定して、接続用に使用可能なポートをローカルに選択することを示します。 socketaddress localsocketaddr = new inetsocketAddress(localineTaddr、0); socket.bind(localsocketaddr); inetsocketAddress endpointsocketaddr = new inetsocketAddress(remoteinetaddr、ポート); socket.connect(endpointsocketaddr、タイムアウト); log.info( "success -connection secistent!local:" + localinetaddr.gethostaddress() + "remote:" + remoteinetaddr.gethostaddress() + "port" + port); isReachable = true; } catch(ioException e){log.error( "failre- can can can conning!local:" + locialinetaddr.gethostaddress() + "remote:" + remoteinetaddr.gethostadress() + "port" +ポート); }最後に{if(socket!= null){try {socket.close(); } catch(ioException e){log.Error( "ソケットを閉じるときにエラーが発生しました:" + e.getMessage()); }}} return isReachable; } / ** * localipがリモートホストとの接続を確立できるかどうかをテストします。ソケットソケット= null; inetAddress locialinetaddr = null; InetAddress remoteInetaddr = null; try {localinetaddr = inetaddress.getByname(localip); remoteinetaddr = inetaddress.getByname(remoteip); socket = new Socket(); //ポート番号を0に設定して、接続用に使用可能なポートをローカルに選択することを示します。 socketaddress localsocketaddr = new inetsocketAddress(localineTaddr、0); socket.bind(localsocketaddr); inetsocketAddress endpointsocketaddr = new inetsocketAddress(remoteinetaddr、ポート); socket.connect(endpointsocketaddr、タイムアウト); log.info( "success -connection secistent!local:" + localinetaddr.gethostaddress() + "remote:" + remoteinetaddr.gethostaddress() + "port" + port); isReachable = true; } catch(ioException e){log.error( "failre- can can can conning!local:" + locialinetaddr.gethostaddress() + "remote:" + remoteinetaddr.gethostadress() + "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:"+"192.168.126.128"); } else {log.info( "======== native pingはIPをpingしません:"+"192.168.126.128"); } if(networkhelper.getInstance()。isreachnetworkinterfaces( "192.168.126.128")))))))))))))))) } else {log.info( "========マシン内のすべてのネットワークカードはIPをpingできません:"+"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); } else {log.info( "=======ネイティブマシンは、IPとの接続のIPを確立できません:"+"192.168.126.128"+"、ポート:"+8081+ ""); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。