留待以后观看

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

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. 使用form 组件写一个用户注册,并用 bootstrap渲染

    需求:使用form组件,写一个用户注册系统,包含用户名, 密码, 确认密码,手机号,性别,爱好,注册.并用bootsrap渲染,成果如下: 首先创建一个django 项目.然后在连接pymysql数据 ...

  2. How to generate rtabmap with a Realsense D435 or Xtion Pro Live?(如何使用Realsense D435或者Xtion Pro Live生成rtabmap?)

    Ubuntu16.04,ROS kinetic 1.在ROS中安装rtabmap_ros包 sudo apt-get install ros-kinetic-rtabmap-ros 2. RGB-D相 ...

  3. 2017-10-1 清北刷题冲刺班p.m

    一道图论好题 (graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...

  4. bzoj2724: [Violet 6]蒲公英(分块)

    传送门 md调了一个晚上最后发现竟然是空间开小了……明明算出来够的…… 讲真其实我以前不太瞧得起分块,觉得这种基于暴力的数据结构一点美感都没有.然而今天做了这道分块的题才发现分块的暴力之美(如果我空间 ...

  5. Jenkins+Jmeter+Ant自动化持续集成环境搭建

    [前言] 今天让我们先把准备工作做好 >> 搭建环境! [正文] JDK+Jmeter安装教程: 参考博客:https://www.cnblogs.com/baoziluo/p/79056 ...

  6. Eclipse中新建Maven Web项目报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    在maven web项目中的index.jsp中的错误信息如下: The superclass "javax.servlet.http.HttpServlet" was not f ...

  7. POJ1034 The dog task

    题目来源:http://poj.org/problem?id=1034 题目大意: 一个猎人在遛狗.猎人的路径由一些给定的点指定.狗跟随着猎人,要与主人同时到达那些指定的点.在丛林里有一些有趣的地方, ...

  8. [Leetcode]007. Reverse Integer

    public class Solution { public int reverse(int x) { long rev=0; while(x!=0){ rev = rev*10+x%10; x=x/ ...

  9. docker jvm 占用高的问题定位

    定位流程 先使用一些轻便的工具查看总体情况, 如果情况糟糕, 再使用重量级的工具 jstack       查看线程数是否过多 jstat -gc -gcutil 查看gc次数和时间是否过多, 各个分 ...

  10. 醉盏的第一篇博客-关于title的换行处理

    在处理title的时候,有时候我们想要换行,标签元素是不可以的,下面有两种特殊字符来实现 <!DOCTYPE ><html> <head runat="serv ...