博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows和Linux下 Java开发ping工具类
阅读量:6891 次
发布时间:2019-06-27

本文共 3604 字,大约阅读时间需要 12 分钟。

 

package com.test.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class PingUtils {
public static boolean ping(String ip, int pingTimes, int timeOut) { BufferedReader in = null; String pingCommand = null; Runtime r = Runtime.getRuntime(); String osName = System.getProperty("os.name"); System.out.println(osName); if(osName.contains("Windows")) { //-n:要发送的回显请求数 -w:每次请求的超时时间 pingCommand = "ping " + ip + " -n " + pingTimes + " -w " + timeOut; }else { //linux下: -c是要发送的回显请求数,没有每次请求超时时间 pingCommand = "ping " + " -c " + pingTimes + " " + ip; } try { Process p = r.exec(pingCommand); if(p == null) { return false; }        //ping命令使用的是GBK编码 in = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK")); int connectCount = 0; String line = null; while((line = in.readLine()) != null) { connectCount += getCheckResult(line,osName); } System.out.println(connectCount); //只要ping通一次就说明连接成功? return connectCount > 0 ; } catch(Exception e) { e.printStackTrace(); logger.error("连接设备状态失败:" + e.getMessage()); return false; } finally { try { in.close(); } catch (IOException e) { logger.error(e.getMessage()); } } } //若含有ttl=64字样,说明已经ping通,返回1,否則返回0. 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) {// ping("127.0.0.1", 4 , 1000);// // } }

 

根据IP地址和端口号PING

package com.zit.util;import java.io.IOException;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketTimeoutException;import java.net.UnknownHostException;import org.apache.log4j.Logger;public class PingUtil {    private static Logger logger = Logger.getLogger(PingUtil.class);            public synchronized static boolean ping(String host, int port, int timeOut) {        boolean flag = false;        Socket socket = null;        try {            socket = new Socket();            socket.connect(new InetSocketAddress(host.trim(), port), timeOut);            flag = true;        } catch (UnknownHostException e) {            System.out.println(flag);            e.printStackTrace();            return false;        } catch (SocketTimeoutException e) {            System.out.println(flag);            e.printStackTrace();            return false;        } catch (IOException e) {            System.out.println(flag);            e.printStackTrace();            return false;        } catch(Exception e) {            System.out.println(flag);            e.printStackTrace();            logger.error("Connect device failed:" + e.getMessage());            return false;        } finally {            try {                if (socket != null) {                    socket.close();                }            }            catch (Exception e) {            }        }        System.out.println(flag);        return flag;    }                public static void main(String[] args) {        ping("10.86.31.47", 80 , 3000);            }    }

 

转载地址:http://mzhbl.baihongyu.com/

你可能感兴趣的文章
Centos下邮件服务器(postfix)的配置(一)
查看>>
Thread类常用方法
查看>>
Yarn大体框架和工作流程研究
查看>>
vue学习笔记(一)
查看>>
微软专家推荐11个Chrome 插件
查看>>
三天学会HTML5——SVG和Canvas的使用
查看>>
MySql基本操作(二)
查看>>
我的友情链接
查看>>
文件上传时几个Content-type
查看>>
我的友情链接
查看>>
Exchange Server 2013 集成Office Web App
查看>>
字节转换工具,在线字节转换工具
查看>>
实验心得
查看>>
mysql 生成行号
查看>>
Control your Thinkpad T430 fan speed in Ubuntu 12.
查看>>
【OSC手机App技术解析】- 在WebView中组装HTML
查看>>
转载 Linux 整合 AD 實戰:CentOS 7.0 整合 Active Directory 驗證管理
查看>>
Android应用升级,检测更新,下载,检验,安装
查看>>
Elasticsearch refresh vs. flush
查看>>
质量管理:测试基础架构图
查看>>