java获取mac地址-屏蔽ip封mac地址

fmms 7年前

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"));       }       }