通过IP地址获得mac地址
来源:互联网 发布:小白鞋推荐 知乎 编辑:程序博客网 时间:2024/06/05 18:00
摘自脚本之家
感谢,感谢,再感谢~
原址:http://www.jb51.net/article/73882.htm
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MacAddressUtil {
/** * 获取MAC地址 * * @return 返回MAC地址 */public static String getMacAddress(String ip) { String macAddress = ""; macAddress = getMacInWindows(ip).trim(); if (macAddress == null || "".equals(macAddress)) { macAddress = getMacInLinux(ip).trim(); } return macAddress;}/** * * @param ip * 目标ip * @return Mac Address * */public static String getMacInWindows(final String ip) { String result = ""; String[] cmd = { "cmd", "/c", "ping " + ip }; String[] another = { "cmd", "/c", "arp -a" }; String cmdResult = callCmd(cmd, another); result = filterMacAddress(ip, cmdResult, "-"); return result;}/** * @param ip * 目标ip * @return Mac Address * */public static String getMacInLinux(final String ip) { String result = ""; String[] cmd = { "/bin/sh", "-c", "ping " + ip + " -c 2 && arp -a" }; String cmdResult = callCmd(cmd); result = filterMacAddress(ip, cmdResult, ":"); return result;}public static String callCmd(String[] cmd) { String result = ""; String line = ""; try { Process proc = Runtime.getRuntime().exec(cmd); InputStreamReader is = new InputStreamReader(proc.getInputStream()); BufferedReader br = new BufferedReader(is); while ((line = br.readLine()) != null) { result += line; } } catch (Exception e) { e.printStackTrace(); } return result;}/** * * @param ip * 目标ip,一般在局域网内 * @param sourceString * 命令处理的结果字符串 * @param macSeparator * mac分隔符号 * @return mac地址,用上面的分隔符号表示 */public static String filterMacAddress(final String ip, final String sourceString, final String macSeparator) { String result = ""; String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(sourceString); while (matcher.find()) { result = matcher.group(1); if (sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher .group(1))) { break; // 如果有多个IP,只匹配本IP对应的Mac. } } return result;}/** * * @param cmd * 第一个命令 * @param another * 第二个命令 * @return 第二个命令的执行结果 */public static String callCmd(String[] cmd, String[] another) { String result = ""; String line = ""; try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(cmd); proc.waitFor(); // 已经执行完第一个命令,准备执行第二个命令 proc = rt.exec(another); InputStreamReader is = new InputStreamReader(proc.getInputStream()); BufferedReader br = new BufferedReader(is); while ((line = br.readLine()) != null) { result += line; } } catch (Exception e) { e.printStackTrace(); } return result;}
}
0 0
- 通过IP地址获得mac地址
- 获得ip和mac地址
- 获得ip和mac地址
- 获得ip和mac地址
- 通过IP地址获取MAC地址
- java通过IP地址获取MAC地址
- 通过IP取MAC地址
- 通过IP获取MAC地址
- 通过IP地址获取MAC
- 通过ip获取mac地址
- 在同一个网段局域网内,通过ip地址获得机器的mac地址
- 获得本机IP和MAC地址
- C# 通过url获得ip地址
- linux c 通过hostname获得ip地址
- gethostbyname通过域名获得IP地址
- 通过java解析域名获得IP地址
- 通过java解析域名获得IP地址
- mac地址、ip地址
- 北大1160,放苹果,分治法
- mysql in 子查询 效率慢 优化
- Apple:如何在iphone、ipad上安装一些常用命令行命令
- [2090]:算菜价
- RAC配置SSH
- 通过IP地址获得mac地址
- Android Fragment 真正的完全解析(上)
- HTML5制作坦克大战游戏+Canvas绘制基础图形——学习笔记一
- leetcode:Length of Last Word 【Java】
- 根据指定路径以及指定文件后缀名 获取文件名
- 2014年最新前端开发面试题(题目列表+答案 完整版)
- Linux下使用 bind搭建DNS主从服务器
- IPP库简介
- 新的开始,向前辈学习