博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现windows系统ping命令
阅读量:6084 次
发布时间:2019-06-20

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

hot3.png

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Pinger { /**  * 要ping的主机  */ private String remoteIpAddress; /**  * 设置ping的次数  */ private final int pingTimes; /**  * 设置超时  */ private int timeOut; /**  * 构造函数  *   * @param remoteIpAddress  * @param pingTimes  * @param timeOut  */ public Pinger(String remoteIpAddress, int pingTimes, int timeOut) {  super();  this.remoteIpAddress = remoteIpAddress;  this.pingTimes = pingTimes;  this.timeOut = timeOut; } /**  * 测试是否能ping通  *   * @param server  * @param timeout  * @return  */ public boolean isReachable() {  BufferedReader in = null;  Runtime r = Runtime.getRuntime();  // 将要执行的ping命令,此命令是windows格式的命令  String pingCommand = "ping " + remoteIpAddress + " -n " + pingTimes + " -w " + timeOut;  try {   Process p = r.exec(pingCommand);   if (p == null) {    return false;   }   in = new BufferedReader(new InputStreamReader(p.getInputStream()));   // 逐行检查输出,计算类似出现=23ms TTL=62字样的次数   int connectedCount = 0;   String line = null;   while ((line = in.readLine()) != null) {    connectedCount += getCheckResult(line);   }   // 如果出现类似=23ms TTL=62这样的字样,出现的次数=测试次数则返回真   return connectedCount == pingTimes;  } catch (Exception ex) {   ex.printStackTrace();   return false;  } finally {   try {    in.close();   } catch (IOException e) {    e.printStackTrace();   }  } } /**  * 若line含有=18ms TTL=16字样,说明已经ping通,返回1,否則返回0.  *   * @param line  * @return  */ private static int getCheckResult(String line) {  Pattern pattern = Pattern.compile("(\\d+ms)(\\s+)(TTL=\\d+)", Pattern.CASE_INSENSITIVE);  Matcher matcher = pattern.matcher(line);  while (matcher.find()) {   return 1;  }  return 0; }

转载于:https://my.oschina.net/syso4yy/blog/591455

你可能感兴趣的文章
jsp jsp九个内置对象
查看>>
PHP(六)PHP和HTML混合的一种形式
查看>>
前端Js框架汇总
查看>>
Cooperation.GTST团队第一周项目总结
查看>>
递归遍历二叉树
查看>>
图标网站收藏
查看>>
jquerymobile changepage 无法加载外部js文件解决办法
查看>>
终结2011,吹响2012的号角
查看>>
mysql 免安装版安装(window7)
查看>>
创建可以销毁的对象代码段
查看>>
python链家网高并发异步爬虫asyncio+aiohttp+aiomysql异步存入数据
查看>>
python fabric实现远程操作和部署
查看>>
html实现用户注册页面(表单+表格)——html小练习
查看>>
WebService开发常见问题
查看>>
Tomcat 部署方式
查看>>
C# 基础学习 之 深复制和浅复制
查看>>
C结构体中数据的内存对齐问题
查看>>
QT 布局管理器的使用
查看>>
Noip2015提高组解题报告
查看>>
评论挖掘,准备研究下
查看>>