构造一个ping的命令类
这个类中可以设置需要ping的目标域名
类提供方法public void exec();
方法执行完毕后可以读取ping的次数,ping的成功回应包个数
ping的丢包个数,ping的丢包率
最大的ping值,最小ping值,平均ping值
ExecPing ep=new ExecPing("www.baidu.com","-n","100");
ep.exec();
ep.getLostPer();
ep.getLostNum();
eo.getMaxPingVal();
eo.getMinPingVal();

主方法中可以输入:www.baidu.com ,也可以输入:www.baidu.com","-n","100",所以在功能类中定义了一个一参构造和多参构造,如果是一参则设置默认发送4次,如果是多参则将参数转为整形赋给sentNum变量,执行过程主要使用Runtime,将执行结果赋给process,并使用语句new BufferedReader(new InputStreamReader(p.getInputStream()));创建一个对象后使用循环依次取出。之后通过字符串的indexOf、subString,方法后使用spilt对字符串进行分割,之后存入数组,取数组第一个元素即可。其余功能类似。

 package day14_1;

 import java.io.BufferedReader;
import java.io.InputStreamReader; public class ExecPing { private int sentNum;
private int receiveNum;
private int lostPer;
private int lostNum;
private int maxPingVal;
private int minPingVal;
private String cmdStr; public ExecPing() {
} /**
* 一参构造 输入:ping www.baidu.com
*
* @param cmdStr
*/
public ExecPing(String cmdStr) {
// this.cmdStr = cmdStr;
this.cmdStr = "ping " + cmdStr;
this.sentNum = 4;
} /**
* 多参构造 输入:ping -n 10 www.baidu.com
*
* @param cmdStr
* ping www.baidu.com
* @param paraOne
* -n
* @param paraTwo
* 10
*/
// www.baidu.com","-n","100"
public ExecPing(String cmdStr, String paraOne, String paraTwo) {
this.cmdStr = "ping " + paraOne + " " + paraTwo + " " + cmdStr;
this.sentNum = Integer.parseInt(paraTwo); } /**
* 执行方法
*
* @return
*/
public void exec() {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
Process p = Runtime.getRuntime().exec(cmdStr);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
// StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
} } catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} String str = sb.toString();
System.out.println(str); int indexLostNum = str.indexOf("丢失 = ");
String strLostNum = str.substring(indexLostNum + 5); // 找到位置
String[] strLostNumArr = strLostNum.split(" ");// 拆分截取的字符串,取第一个内容
setLostNum(Integer.parseInt(strLostNumArr[0]));
// System.out.println("丢失了:" + Integer.parseInt(strLostNumArr[0]) +
// "个"); int indexLostPerNum = str.indexOf("丢失 = 0 (");
String strLostPerNum = str.substring(indexLostPerNum + 8); // 找到位置
String[] strLostPerNumArr = strLostPerNum.split("%");// 拆分截取的字符串,取第一个内容
setLostPer(Integer.parseInt(strLostPerNumArr[0])); int indexMaxPingVal = str.indexOf("最长 = ");
String strMaxPingVal = str.substring(indexMaxPingVal + 5); // 找到位置
String[] strMaxPingValArr = strMaxPingVal.split("m");// 拆分截取的字符串,取第一个内容
setMaxPingVal(Integer.parseInt(strMaxPingValArr[0])); int indexMinPingVal = str.indexOf("最短 = ");
String strMinPingVal = str.substring(indexMinPingVal + 5); // 找到位置
String[] strMinPingValArr = strMinPingVal.split("m");// 拆分截取的字符串,取第一个内容
setMinPingVal(Integer.parseInt(strMinPingValArr[0])); } public void getSentNum() {
System.out.println("ping了:" + sentNum + "次");
} public void getLostPer() {
System.out.println("丢失率:" + lostPer + "%");
} public void setLostPer(int lostPer) {
this.lostPer = lostPer;
} public void getLostNum() {
System.out.println("丢失了:" + lostNum + "个");
} public void setLostNum(int lostNum) {
this.lostNum = lostNum;
} public void getMaxPingVal() {
System.out.println("最长:" + maxPingVal + "毫秒");
} public void setMaxPingVal(int maxPingVal) {
this.maxPingVal = maxPingVal;
} public void getMinPingVal() {
System.out.println("最短:" + minPingVal + "毫秒");
} public void setMinPingVal(int minPingVal) {
this.minPingVal = minPingVal;
} }
 package day14_1;

 public class TestExecPing {
public static void main(String[] args) {
ExecPing ep = new ExecPing("www.baidu.com","-n","2");
ep.exec();
System.out.println("======================================");
ep.getLostNum();
ep.getLostPer();
ep.getMaxPingVal();
ep.getMinPingVal();
ep.getSentNum();
} }

运行截图如下:

Java实现获取命令行中的指定数据的更多相关文章

  1. Java实现获取命令行中获取指定数据

    执行ipconfig /all获取主机所有网卡信息并分析这些字符串,提取出有效网卡(网卡名称,mac地址,ipv4地址,掩码,网关,dns)将网卡插入HashMap中,key是网卡的名称,value是 ...

  2. Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素

    ylbtech-Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素 1.返回顶部 1. Java 实例 - 在数组中查找指定元素  Java 实例 以下实例 ...

  3. 【Java EE 学习 78 中】【数据采集系统第十天】【Spring远程调用】

    一.远程调用概述 1.远程调用的定义 在一个程序中就像调用本地中的方法一样调用另外一个远程程序中的方法,但是整个过程对本地完全透明,这就是远程调用.spring已经能够非常成熟的完成该项功能了. 2. ...

  4. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】

    经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...

  5. java多线程向数据库中加载数据

    读取本地文件,每行为一条记录,文件大小550M,200万条数据.先将文件读取的内存中,再开启6个线程连接postgresql不同coordinator端口导入数据.代码如下: import java. ...

  6. Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)

    转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...

  7. java 判断Map集合中包含指定的键名,则返回true,否则返回false。

    public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple" ...

  8. java启动jar包中的指定类

    运行jar文件的方法是:java -jar xxx.jar 希望运行里面的具体某个类,这时可以通过:java -cp xxx.jar xxx.com.xxxx 其中-cp命令是将xxx.jar加入到c ...

  9. Java快速向数据库中插入大量数据 比如10万条以上

    String sql = "insert into table *****"; //必须要有这句,要不然效果不明显 con.setAutoCommit(false); ps = c ...

随机推荐

  1. 使用java API进行zip递归压缩文件夹以及解压

    一.概述 在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压.所有这些都是使用Java提供的核心库java.util.zip来实现的. 二.压缩文件 首先我们来学习一个简单的例 ...

  2. C#算法设计排序篇之08-计数排序(附带动画演示程序)

    计数排序(Counting Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/689 访问. 计数排序是一个非基 ...

  3. C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4040 访问. 给定两个字符串 s 和 t ,编写一个函数来判断 ...

  4. windows下的Redis安装:

    windows下的Redis安装: 百度网盘地址:https://pan.baidu.com/s/1yYED2pXLWolPXvWaABtF2Q 提取密码:xshu 1.解压文件并且创建start.b ...

  5. Jmeter 常用函数(7)- 详解 __time

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回各种格式的当前时间 语法格式 ${ ...

  6. github 加速方法

    登录网址:https://github.com.ipaddress.com/codeload.github.com#ipinfo 更改hosts:

  7. redis安装及性能测试

    Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库.通常被称为数据结构服务器,因为值(value)可以是 字符串(Stri ...

  8. Reinforcement learning in populations of spiking neurons

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 尽管存在神经元变异性,但是群体编码被广泛认为是实现可靠行为响应的重要机制.但是,随着全局奖励信号与任何单独神经元的性能越 ...

  9. SQL联结笔记(内联结,自联结,自然联结,外联结区别以及应用)

    SQL中有三种联结,分别是:内联结,自然联结,外联结. 联结是针对不同表联合起来的一种方式.应用的对象是:表(table) 为了方便验证练习理解,首先展示所要用到的表的内容: 1.Customers表 ...

  10. SLS案例中心

    今日PV nginx日志查看今日的PV和昨日的对比,先通过count函数计算总的pv,再用compare函数得出今日的pv和昨日的同比. 通过单值图进行展示,显示值为20.381Mil,对比值为-2% ...