首页 > 代码库 > JAVA获取客户端的MAC地址
JAVA获取客户端的MAC地址
今天有个需求,就是后台的日志要记录下访问者的详细访问记录信息,包括环境信息,至于浏览器信息、IP啦这些的相信大家都可以从request中拿到,但是这个客户端的MAC地址需要自己写个方法获取,我写了一个方法,现拿出来和大家分享,小弟编码水平有限,有什么设计不合理的地方,望各位大神勿喷。
代码如下:
package com.app.archive.util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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; } /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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; } /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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; } } return result; } /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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; } /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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; } /** * @E-mail:luckyboyguo@126.com * @author luckyboy * @QQ:263235040 */ 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("127.0.0.1")); } }
测试结果:
JAVA获取客户端的MAC地址
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。