使用java发送ping命令

在项目中需要测试网络状况,决定用ping命令来查看当前的网络情况,起初手动输入ping命令。

随后要增加设备并长期监测网络状态,这样显然不能在手动了,对cmd的脚本也不熟练,决定还是使用java。

查了一下,果然使用java是没问题的。

查了一下,大家有 很多方式去实现。有人自己根据ICMP协议去,自己做了一个ping,有人通过jdk中已经封装好了的方法去实现,我决定还是直接调用jdk中去调用控制台发送ping命令。

第一种:

    @Test
    public void test01() {
        //查看一下当前系统的编码方式
        //因为是调用系统的ping命令 返回结果是使用系统的编码的
        System.out.println(System.getProperty("sun.jnu.encoding"));;

        String line = null;
        try {
            Process pro = Runtime.getRuntime().exec("ping " + "192.168.1.101 -n 5");
            BufferedReader buf = new BufferedReader(new InputStreamReader(
                    pro.getInputStream(),"GBK"));
            while ((line = buf.readLine()) != null)
                System.out.println(line);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

第二种:


    @Test
    public void test02() {
        try {
            InetAddress host = InetAddress.getByName("192.168.1.101");
            //3000 为超时时间
            boolean reachable = host.isReachable(3000);
            System.out.println(reachable);
        } catch (IOException e) {

        }
    }
原文地址:https://www.cnblogs.com/dingzuoheng/p/12805061.html