Android 执行 ping ip 命令是否通的代码

网上有的说 是android 但命令是windows 的,ping的命令 windows 和linux 以及android 的参数含义会稍有不同,而恰巧会影响这个判断:
先看网上的第一种写法:

在这里插入图片描述有几个问题, -n 次数 -w deadline时长, linux 中次数用的是 -c ,android 中 参数在前,ip在后面 。
所以经过摸索,我修改了一版。如下
在这里插入图片描述这样还不行,in读取的是null的
然后我在网上搜到了这样的版本:
在这里插入图片描述
他这个也有问题,划线的两个问题, ping命令 android 还一直执行,阻塞线程,要用参数,第二个划线的字符串不对,实测 应该是我下面的那个字符串,最后付一个最终版本:

    public static boolean ping2(String address, int pingTimes, int timeOut) {
    
    
        Process process = null;
        try {
    
    
            process = Runtime.getRuntime().exec( "ping "  + "-c " + pingTimes + " -w " + timeOut+ " "+address);
            InputStreamReader r = new InputStreamReader(process.getInputStream());

            LineNumberReader returnData = new LineNumberReader(r);

            String returnMsg="";

            String line = "";

            while ((line = returnData.readLine()) != null) {
    
    

                System.out.println(line);

                returnMsg += line;

            }

            if(returnMsg.indexOf("100% packet loss")!=-1){
    
    

                System.out.println("与 " +address +" 连接不畅通.");
                  return  false;
            } else{
    
    

                System.out.println("与 " +address +" 连接畅通.");
                   return true;
            }
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
     return false;

    }

猜你喜欢

转载自blog.csdn.net/u012553125/article/details/124795317
今日推荐