java獲取mac地址-屏蔽ip封mac地址
java通過ip獲取mac地址-封ip封mac地址
package com.yjf.test;import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern;
/**
- 獲取MAC地址
- @author sunlightcs
- 2011-4-29
http://hi.juziku.com/sunlightcs/ */ public class GetMacAddress {
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 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;
}
/**
*
* @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 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;
}
來源博客:http://yijianfengvip.blog.163.com/blog/static/175273432201212295830661/
/**
*
* @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;
}
/**
* 獲取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;
}
/**
* 測試
*/
public static void main(String[] args) {
System.out.println(getMacAddress("220.181.111.148"));
}
}</pre>
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!