留待以后观看

————————————————————————————————————————————————————————————————————————————

public class IP_MAC_TypeHelper {

	/**
* 控制台执行arp -a命令
*
* @return
*
*/
public static InputStream getInputStream() {
Runtime rt = Runtime.getRuntime();
InputStream in = null;
try {
Process p = rt.exec("cmd.exe /c arp -a");
in = p.getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return in; } /**
* 获取的字节流转成String
*
* @param in
* @return
*/
public static String read(InputStream in) {
InputStreamReader isr;
try {
isr = new InputStreamReader(in, "GBK");
BufferedReader br = new BufferedReader(isr);
String inline = null;
StringBuffer sb = new StringBuffer();
while ((inline = br.readLine()) != null) {
// System.out.println(inline);
sb.append(inline);
}
return sb.toString();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null; } /**
* 格式化输出信息
*
* @param msg
* @return
*/
public static String[] getMsg(String msg) {
//按换行截取
String[] tempmessage = msg.split("\r\n");
StringBuffer sb = new StringBuffer();
for (String s : tempmessage) {
sb.append(s + " ");
}
String temp = sb.toString();
return temp.split(" {1,}");
} /**
* 截取IP地址信息
*
* @param msg
* @return
*/
public static List<String> getIp(String[] msg) {
List<String> list = new ArrayList<String>();
for (String s : msg) {
boolean flag = s.matches("^[0-9]{1,3}(\\.[0-9]{1,3}){3}$");// 匹配IP的正则
if (flag) {
list.add(s);
}
}
return list;
} /**
* 截取MAC地址信息
*
* @param msg
* @return
*/
public static List<String> getMac(String[] msg) {
List<String> list = new ArrayList<String>();
String regx = "^[a-zA-Z0-9]{2}(-[a-zA-Z0-9]{2}){5}$"; // 匹配MAC地址的正则
for (String s : msg) {
if (s.matches(regx)) {
list.add(s);
}
}
return list;
} /**
* 截取类型信息
*
* @param msg
* @return
*/
public static List<String> getType(String[] msg) { List<String> list = new ArrayList<String>();
for (String s : msg) {
if (s.contains("态")) { // 判断是否为指定字符
list.add(s);
}
}
return list; } /**
* 移除本机IP(包含网卡)
* @param ipList
* @return
*/
public static List<String> removeLocalIp(List<String> ipList) {
List<String> ripList = new ArrayList<String>();
try {
Enumeration<NetworkInterface> netInterfaces = NetworkInterface
.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface nif = netInterfaces.nextElement();
Enumeration<InetAddress> iparray = nif.getInetAddresses();
while (iparray.hasMoreElements()) {
/*
* System.out.println("IP:" +
* iparray.nextElement().getHostAddress());
*/
ripList.add(iparray.nextElement().getHostAddress());
}
} } catch (Exception e) {
System.out.println(e.getMessage());
}
for (int i = 0; i < ipList.size() - 1; i++) {
for (String rip : ripList) {
if (ipList.get(i).equals(rip)) {
ipList.remove(i);
}
}
}
return ipList;
} /**
* 获取对应的IP、MAC、类型
* @return
*/
public static List<Admin> getIp_Mac_Type() {
List<Admin> aList = new ArrayList<Admin>();
InputStream in = getInputStream();
String message = read(in);
String[] msg = getMsg(message);
List<String> list_ip = removeLocalIp(getIp(msg));
List<String> list_mac = getMac(msg);
List<String> list_type = getType(msg);
for(int i = 0; i<list_ip.size(); i++){
Admin admin = new Admin();
admin.setIp(list_ip.get(i));
admin.setMac(list_mac.get(i));
admin.setType(list_type.get(i));
aList.add(admin);
}
for(Admin a:aList){
System.out.println(a.getIp());
}
return aList;
} }

我们知道在cmd命令行窗口中输入arp -a能得到局域网下所有IP,上述代码调用该命令得到所有IP,以上仅为借鉴。有待完善。。。

————————————————————————————————————————————————————————

版权所有,出自http://www.cnblogs.com/ytlds

调用cmd命令行命令(借鉴)的更多相关文章

  1. system调用命令行命令而不显示命令行窗口

    system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 #pragma comment( lin ...

  2. C/C++ 程序中调用命令行命令并获取命令行输出结果

    在 c/c++ 程序中,可以使用 system()函数运行命令行命令,但是只能得到该命令行的 int 型返回值,并不能获得显示结果.例如system(“ls”)只能得到0或非0,如果要获得ls的执行结 ...

  3. Windows命令行命令集锦

    原文:Windows命令行命令集锦 转自:http://www.me2wg.com/bbs/forum.php?mod=viewthread&tid=15830 winver--------- ...

  4. MySql命令行命令和SQL语句

    一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听 ...

  5. iOS工程师常用的命令行命令总结

    感觉有点标题党了. 作为一个iOS工程师,没有做过服务端,主要用的是mac电脑,此篇博文是记录我在工作,学习的过程中用的命令行命令的记录和归纳总结 一. mac命令行 1. cd /Users/xxx ...

  6. Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 * Windows不区分大小写,Linux区分大小写的. sn DOS Command UNIX Equivalent Effect 影响 1 ASSIGN ...

  7. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

  8. [转帖]Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 https://www.cnblogs.com/sztom/p/10785140.html * Windows不区分大小写,Linux区分大小写的. sn ...

  9. 我自己总结的sqlite的命令行命令集

    我自己总结的sqlite 的命令行命令 导入文本数据文件时,设置分隔符为","sql>.separator "," sql>import devic ...

随机推荐

  1. vue.js2.0实战(1):搭建开发环境及构建项目

    Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...

  2. final注意事项

    final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的. final修饰的方法为终态方法,不能被重写.而继承抽象类,必须重写其方法. 抽象 ...

  3. JSP有哪些动作?

    JSP使用动作来动态的插入文件,实现重定向和对JavaBean的引用等功能.它公有6个基本动作:jsp:include,jsp:useBean,jsp:setProperty,jsp:getPrope ...

  4. C#----接口与多继承

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 接口 { ...

  5. 【本人译作推荐】Windows 8应用开发:C#和XAML卷(原名:Building Windows 8 Apps with C# and XAML)

    [图书推荐] 译名:Windows 8应用开发:C#和XAML卷 原名:Building Windows 8 Apps with C# and XAML   编辑推荐 国内第一本使用XAML与C#语言 ...

  6. PHP开源系统学习之fluxbb_1

    最近一直忙于做项目,虽说做了点新东西.感觉自己进步不是很大,总体水平还是跟半年前差不多,想到的东西跟以前差不多,写出来的东西也跟以前差不多.只是现在做的东西多些,比以前敢做了. 近期准备利用点时间,读 ...

  7. Linux vim常用选项

    Vim命令 三种模式 Command Mode 命令模式 Insert Mode 插入模式 Last LineMode 底行模式 底行模式常用命令 :w 保存 :q 退出 :! + 命令 :! ls ...

  8. 边界提取_MATLAB

    下面是利用腐蚀算法进行边界提取,即原图减去腐蚀后的图得到边界 f=imread('D:/picture/ZiXia.jpg'); figure; subplot(,,); imshow(f); tit ...

  9. python之05 操作系统用户密码修改

    ubuntu的操作系统修改密码的操作方法: 一.在系统启动时按住shift键,出现下图的界面 二.按下e进入命令行,找到下图红色框中的文字并修改成rw init=/bin/bash 然后按F10启动, ...

  10. Zabbix监控系统配置之-自动发现规则入门

    假设你已经知道[模板-监控项-监控项原型-自动发现规则]之间的关系.(此处应有关系图,待填坑) 1. 添加模板 我新建了一个名叫Dapianzi SNMP Linux的模板,里面添加了已经启动了SNM ...