文档章节

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
博文 63
码字总数 6228
作品 0
合肥
Windows上的Java Usage Tracker本地提权漏洞详情披露(CVE-2018-3211)

     我们发现,Java Usage Tracker中的设计缺陷/弱点可以让黑客创建任意文件,注入攻击者指定的参数并提升本地特权。反过来,这些可以链接起来并用于升级权限,以便访问受影响系统中的资...

嘶吼RoarTalk
今天
0
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

没有更多内容

加载失败,请刷新页面

加载更多

io流

码农屌丝
26分钟前
0
0
SpringBoot基础篇之重名Bean的解决与多实例选择

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 当通过接口的方式注入Bean时,如果有多个子类的bean存在时,具体哪个bean会被注入呢?系统中能否存在两个重名的bean呢?如果可以,那么怎么...

小灰灰Blog
36分钟前
0
0
记录一次dubbo项目实战

一、案例说明 存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。 二、环境搭建 安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下: 然后进入conf将zoo_s...

Java烂猪皮
40分钟前
0
0
拜托,别再问怎么深入学习分布式架构了!

由于分布式系统所涉及到的领域众多,知识庞杂,很多新人在最初往往找不到头绪,不知道从何处下手来一步步学习分布式架构。 本文试图通过一个最简单的、常用的分布式系统,来阐述分布式系统中...

Java架构资源分享
41分钟前
0
0
《netty入门与实战》笔记-05:心跳与空闲检测

本小节,我们一起探讨最后一个话题:心跳与空闲检测 首先,我们来看一下,客户端与服务端之间的网络会存在什么问题? 1. 网络问题 下图是网络应用程序普遍会遇到的一个问题:连接假死 连接假...

Funcy1122
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部