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 }
时间: 2024-08-30 04:07:12

pingUtil的相关文章

java实现ping ip地址

编写工具类 PingUtil 其他程序可以通过类名调用: public class PingIpUtil { private static Logger logger =Logger.getLogger(PingIpUtil.class); public static Boolean  pingIp(String mdmc,String ipadd)throws Exception{ //获得当前进程对象 Runtime runtime=Runtime.getRuntime(); Process