zoukankan      html  css  js  c++  java
  • Java代码ping ip工具类

    一.工具类
    package com.v.photos.utils;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    
    /**
     * @Author: 孙创业
     * @Date:2019/10/29 18:13
     */
    public class PingUtil {
        private static Logger logger = LoggerFactory.getLogger(PingUtil.class);
    
        /**ping  ipaddress 完整返回信息*/
        public static String executeLinuxCmd(String ipAddress, int pingTimes, int timeOut) {
            Runtime run = Runtime.getRuntime();
            String pingCommand;
            try {
                String osName = System.getProperty("os.name");
                if(osName.contains("Windows")){
                    pingCommand = "ping " + ipAddress + " -n " + pingTimes    + " -w " + timeOut;
                }else{
                    pingCommand = "ping " + " -c " + "4" + " -w " + "2 " + ipAddress;
                }
                Process process = run.exec(pingCommand);
                InputStream in = process.getInputStream();
                BufferedReader bs = new BufferedReader(new InputStreamReader(in, Charset.forName("GBK")));
                StringBuffer out = new StringBuffer();
                String content = null;
                while ((content = bs.readLine()) != null) {
                    out.append(content + "
    ");
                }
                in.close();
                process.destroy();
                return out.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**ping  ipaddress 完整返回true在线 false离线*/
        public static boolean ping(String ipAddress, int pingTimes, int timeOut) {
            BufferedReader in = null;
            String pingCommand;
            Runtime r = Runtime.getRuntime();
            String osName = System.getProperty("os.name");
            if(osName.contains("Windows")){
                pingCommand = "ping " + ipAddress + " -n " + pingTimes    + " -w " + timeOut;
            }else{
                pingCommand = "ping " + " -c " + "4" + " -w " + "2 " + ipAddress;
            }
            try {
                Process p = r.exec(pingCommand);
                if (p == null) {
                    return false;
                }
                in = new BufferedReader(new InputStreamReader(p.getInputStream()));
                int connectedCount = 0;
                String line;
                while ((line = in.readLine()) != null) {
                    connectedCount += getCheckResult(line,osName);
                }
                return connectedCount >= 2 ? true : false;
            } catch (Exception ex) {
                ex.printStackTrace(); //出现异常则返回假
                return false;
            } finally {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        private static int getCheckResult(String line,String osName) {
            if(osName.contains("Windows")){
                if(line.contains("TTL=")){
                    return 1;
                }
            }else{
                if(line.contains("ttl=")){
                    return 1;
                }
            }
            return 0;
        }
    
        public static void main(String args[]) {
            //String ping = executeLinuxCmd("10.3.149.27", 2, 1);
            String ping = executeLinuxCmd("10.4.8.144", 2, 1);
            System.out.println(ping);
    
            //boolean ping1 = ping("10.3.149.27", 2, 1);
            boolean ping1 = ping("10.4.88.144", 2, 1);
            System.out.println("盒子IP地址:" + "10.4.8.144" + (ping1 ? "在线" : "下线"));
        }
    }
    
    
    
     
  • 相关阅读:
    leetcode 105. 从前序与中序遍历序列构造二叉树
    leetcode 96. 不同的二叉搜索树
    leetcode 21. 合并两个有序链表
    leetcode 617. 合并二叉树
    leetcode 101. 对称二叉树
    欧拉定理和扩展欧拉定理。
    [NOI2018] 屠龙勇士
    [SDOI2010]古代猪文
    [SDOI2013]方程
    扩展Lucas定理
  • 原文地址:https://www.cnblogs.com/thcy1314/p/11832983.html
Copyright © 2011-2022 走看看