构造一个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. 修改mac系统名字&&神秘bogon

    问题分析 你是否遇见过突然终端突然出现奇怪 bogon # name @ bogon in ~ [22:31:01] $ 这是因为终端会先向 DNS 请求查询当前 IP 的反向域名解析的结果,如果查询 ...

  2. Vue组件通信之子传父

    子组件向父组件通信主要通过自定义事件实现. 这里我记录一个小例子来帮助自己记忆. 通过点击子组件的按钮去执行父组件的函数并使用子组件传来的数据. 子组件定义如下: <template id=&q ...

  3. 【Linux】zookeeper-3.5.6启动失败8080端口被占用

    通过查看zookeeper的官方文档 1. 可以禁用adminServer 2.可以删除jetty服务

  4. SqlServer 版本号

    RTM (no SP) SP1 SP2 SP3 SP4 SQL Server 2014      codename Hekaton  12.00.2000.8 SQL Server 2012      ...

  5. C#LeetCode刷题-二叉搜索树

    二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III   19.3% 中等 315 计算右侧小于当前元素的个数   31.9% 困难 327 区间和的个数   29.5% 困难 3 ...

  6. C#LeetCode刷题之#28-实现strStr()(Implement strStr())

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3895 访问. 实现 strStr() 函数. 给定一个 hays ...

  7. mysql的ATM存取款机系统

    ##建库 CREATE DATABASE bankDB; ##客户信息表 CREATE TABLE userInfo ( customerID INT PRIMARY KEY AUTO_INCREME ...

  8. idea Maven项目 包下载不下来或者已经下载了就是飘红

    0.先在settings.xml加上阿里的镜像在刷新试试 <mirror> <id>aliyunmaven</id> <mirrorOf>*</m ...

  9. IntelliJ IDEA安装Activiti插件并使用

    一.安装Activiti插件 1.搜索插件 点击菜单[File]-->[Settings...]打开[Settings]窗口. 点击左侧[Plugins]按钮,在右侧输出"actiBPM",点击 ...

  10. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 项目介绍

    缘起 目前使用ABP框架已经将近3年了,大大小小的项目也陆陆续续做了很多.由于现有信息系统的架构模式是在底层的技术平台上直接构建信息系统并采用技术主导,使用业务无关的编程工具来开发信息系统的缺陷使得系 ...