• pingUtil


     1 package unit;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.IOException;
     5 import java.io.InputStreamReader;
     6 import java.net.InetAddress;
     7 import java.util.regex.Matcher;
     8 import java.util.regex.Pattern;
     9 
    10 public class pingUtil {
    11      public static boolean ping(String ipAddress) throws Exception{  
    12             int timeOut=3000;  
    13             boolean status=InetAddress.getByName(ipAddress).isReachable(timeOut);   // 当返回值是true时,说明host是可用的  
    14             return status;  
    15         }  
    16           
    17         public static void ping02(String ipAddress){  
    18             String line=null;  
    19               
    20             try {  
    21                 Process pro=Runtime.getRuntime().exec("ping "+ipAddress);  
    22                 BufferedReader buf=new BufferedReader(new InputStreamReader(pro.getInputStream(),"utf-8"));  
    23                 while((line=buf.readLine())!=null){  
    24                     System.out.println(line);  
    25                 }  
    26             } catch (Exception e) {  
    27                 System.out.println(e.getMessage());  
    28             }  
    29         }  
    30           
    31         public static boolean ping(String ipAddress,int pingTimes,int timeOut){  
    32             BufferedReader in=null;  
    33             Runtime r= Runtime.getRuntime();  
    34             String pingCommand = "ping "+ipAddress+" -n "+pingTimes+" -w "+timeOut;  
    35               
    36             try {//执行命令并获取输出  
    37                 System.out.println(pingCommand);  
    38                 Process p = r.exec(pingCommand);  
    39                 if(p==null){  
    40                     return false;  
    41                 }  
    42                 in = new BufferedReader(new InputStreamReader(p.getInputStream(),"utf-8"));  
    43                 int connectedCount=0;  
    44                 String line=null;  
    45                 while((line=in.readLine())!=null){  
    46                     connectedCount += getCheckResult(line);  
    47                 }//如果出现类似=20ms TTL=22这样的字符,出现的次数=测试次数 则返回真  
    48                 return connectedCount == pingTimes;  
    49             } catch (Exception e) {  
    50                 e.printStackTrace();//出现异常则返回假  
    51                 return false;  
    52             }finally{  
    53                 try {  
    54                     in.close();  
    55                 } catch (IOException e) {  
    56                     e.printStackTrace();  
    57                 }     
    58             }  
    59         }  
    60           
    61         //若line含有=18ms TTL=16字样,说明已经ping通,返回1,否則返回0.  
    62         private static int getCheckResult(String line){  
    63             Pattern pattern=Pattern.compile("(\d+ms)(\s+)(TTL=\d+)",Pattern.CASE_INSENSITIVE);  
    64             Matcher matcher = pattern.matcher(line);   
    65             while(matcher.find()){  
    66                 return 1;  
    67             }  
    68             return 0;  
    69         }  
    70           
    71         public static void main(String[] args) throws Exception{  
    72             String ipAddress="www.qq.com";  
    73 //            System.out.println(ping(ipAddress));  
    74             ping02(ipAddress);  
    75             System.out.println(ping(ipAddress,5,5000));
    76         }
    77 
    78 }
  • 相关阅读:
    Rotate Image,N*N矩阵顺时针旋转90度
    JumpGame,JumpGame2
    WildcardMatching和Regex,通配符匹配和正则表达式匹配
    Multiply Strings,字符串相乘
    TrappingRainWater
    300万PV的ASP.NET网站使用阿里云的配置建议
    java 学习 安卓学习
    如何学习Yii
    Lemon开源OA
    JAVA-进行Java Web项目开发需要掌握的技术
  • 原文地址:https://www.cnblogs.com/redhat0019/p/8031995.html
Copyright © 2020-2023  润新知