文档章节

java实现windows系统ping命令

大号没有了
 大号没有了
发布于 2015/12/30 11:01
字数 262
阅读 3
收藏 0
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;
 }

© 著作权归作者所有

共有 人打赏支持
大号没有了
粉丝 2
博文 60
码字总数 6228
作品 0
合肥
用java代码编写Oracle存储过程

以下示例用java实现ping,然后用PLSQL存储过程调用该方法,可用来测试dblink服务器网络状态 1.java调用系统功能实现ping,返回ping后获取的字符(以下代码在Linux上通过,windows的话需要修改...

IdleMan
2012/09/14
0
0
JAVA调用系统命令或可执行程序

通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过。基本原理是,首先通过 Runtime.getRuntime() 返回与当前 ...

Ryan-瑞恩
2012/11/06
0
0
linux下tomcat服务的相关命令

一:Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 切换到tomcat主目录下的bin目录(cd usr/local/tomcat/bin) 1,...

leqianlong
2014/02/11
0
0
Maven的安装文字版(Windows/Linux/Mac)

以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/mavenenvironment_setup.html,安装信息更新到最新版本: Maven是基于Java的工具,所以首要必须的要求是你的电...

easonjim
2017/05/07
0
0
native关键字初识--java调用非java代码的接口

Java基础知识——JNI入门介绍(上) Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已有的代...

成长中的菜鸟
2015/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
0
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
0
0
日期和时间API - 读《Java 8实战》

日期与时间 LocalDate 创建一个LocalDate对象并读取其值 // 根据年月日创建日期LocalDate date1 = LocalDate.of(2014, 3, 18);// 读取System.out.println(date1.getYear()); // 2014Sys...

yysue
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部