import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; /** * @title: MacAddressUtil * @description:获取MAC地址 * @author:liming * @date: 2013-5-5 下午04:42:50 */ public class MacAddressUtil{ /** * @MethodName: getOSName * @description : 获取当前操作系统名称. return 操作系统名称 例如:windows,Linux,Unix等 * @author:liming * @date: 2013-5-5 下午04:43:36 * @return String */ public static String getOSName() { return System.getProperty("os.name").toLowerCase(); } /** * @MethodName: getWindowXPMACAddress * @description : 获取widnowXp网卡的mac地址 * @author:liming * @date: 2013-5-5 下午04:45:12 * @param execStr * @return String */ public static String getWindowXPMACAddress(String execStr) { String mac = null; BufferedReader bufferedReader = null; Process process = null; try { // windows下的命令,显示信息中包含有mac地址信息 process = Runtime.getRuntime().exec(execStr); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { if(line.indexOf("本地连接") != -1) //排除有虚拟网卡的情况 continue; // 寻找标示字符串[physical address] index = line.toLowerCase().indexOf("physical address"); if (index != -1) { index = line.indexOf(":"); if (index != -1) { //取出mac地址并去除2边空格 mac = line.substring(index + 1).trim(); } break; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { e1.printStackTrace(); } bufferedReader = null; process = null; } return mac; } /** * @MethodName: getWindow7MACAddress * @description : 获取widnow7网卡的mac地址 * @author:liming * @date: 2013-5-5 下午04:46:56 * @param execStr * @return String */ public static String getWindow7MACAddress() { //获取本地IP对象 InetAddress ia = null; try { ia = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } //获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。 byte[] mac = null; try { mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress(); } catch (SocketException e) { e.printStackTrace(); } //下面代码是把mac地址拼装成String StringBuffer sb = new StringBuffer(); for(int i=0;i<mac.length;i++){ if(i!=0){ sb.append("-"); } //mac[i] & 0xFF 是为了把byte转化为正整数 String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length()==1?0+s:s); } //把字符串所有小写字母改为大写成为正规的mac地址并返回 return sb.toString().toUpperCase(); } /** * @MethodName: getLinuxMACAddress * @description : 获取Linux网卡的mac地址 * @author:liming * @date: 2013-5-5 下午04:49:13 * @return String */ public static String getLinuxMACAddress() { String mac = null; BufferedReader bufferedReader = null; Process process = null; try { // linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 process = Runtime.getRuntime().exec("ifconfig eth0"); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { index = line.toLowerCase().indexOf("硬件地址"); if (index != -1) { // 取出mac地址并去除2边空格 mac = line.substring(index + 4).trim(); break; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { e1.printStackTrace(); } bufferedReader = null; process = null; } return mac; } /** * @MethodName: getUnixMACAddress * @description : 获取Unix网卡的mac地址 * @author:liming * @date: 2013-5-5 下午04:49:59 * @return String */ public static String getUnixMACAddress() { String mac = null; BufferedReader bufferedReader = null; Process process = null; try { // Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 process = Runtime.getRuntime().exec("ifconfig eth0"); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { // 寻找标示字符串[hwaddr] index = line.toLowerCase().indexOf("hwaddr"); if (index != -1) { // 取出mac地址并去除2边空格 mac = line.substring(index + "hwaddr".length() + 1).trim(); break; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { e1.printStackTrace(); } bufferedReader = null; process = null; } return mac; } /** * @MethodName: getMacAddress * @description :获取MAC地址 * @author:liming * @date: 2013-5-5 下午04:53:25 * @return String */ public static String getMacAddress(){ String os = getOSName(); String execStr = getSystemRoot()+"/system32/ipconfig /all"; String mac = null; if(os.startsWith("windows")){ if(os.equals("windows xp")){//xp mac = getWindowXPMACAddress(execStr); }else if(os.equals("windows 2003")){//2003 mac = getWindowXPMACAddress(execStr); }else{//win7 mac = getWindow7MACAddress(); } }else if (os.startsWith("linux")) { mac = getLinuxMACAddress(); }else{ mac = getUnixMACAddress(); } return mac; } /** * @MethodName: getSystemRoot * @description :jdk1.4获取系统命令路径 :SystemRoot=C:\WINDOWS * @author:liming * @date: 2013-5-5 下午04:56:27 * @return String */ public static String getSystemRoot(){ String cmd = null; String os = null; String result = null; String envName = "windir"; os = System.getProperty("os.name").toLowerCase(); if(os.startsWith("windows")) { cmd = "cmd /c SET"; }else { cmd = "env"; } try { Process p = Runtime.getRuntime().exec(cmd); InputStreamReader isr = new InputStreamReader(p.getInputStream()); BufferedReader commandResult = new BufferedReader(isr); String line = null; while ((line = commandResult.readLine()) != null) { line=line.toLowerCase();//重要(同一操作系统不同电脑有些返回的是小写,有些是大写.因此需要统一转换成小写) if (line.indexOf(envName) > -1) { result = line.substring(line.indexOf(envName) + envName.length() + 1); return result; } } } catch (Exception e) { System.out.println("获取系统命令路径 error: " + cmd + ":" + e); } return null; } }
相关推荐
java获取mac,通过命令获取裁剪后得到想要的内容
执行main方法获取mac地址,最权威的demo自己测试已经正常使用。网上基本都是假的获取不到,只有我这个才是最方便的
java获取不同操作系统的名称以及mac地址工具类,例如:windows,Linux,Unix等
在对网内主机进行监控时需要通过java获取远程机器的mac地址
获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request....因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip mac地址
获取用户请求IP地址 根据IP地址获取mac地址
java中通过ip获取远程客户端的mac地址,支持跨平台
主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下
如何使用Java代码获取Android移动终端Mac地址.zip
获取计算机的mac地址和ip地址,mac地址返回的是一个list,ip地址是string
用java实现获取MAC地址的方法,用java实现获取MAC地址的方法
MAC地址合法性检测(C,C++, JAVA实现)
Java获取本机MAC地址IP地址主机名
Java内嵌Chrome浏览器,并实现web项目获取MAC地址,内含Ant打包代码,可以把程序打包到jar目录,直接用cmd文件运行
前段时间摸索在Java中怎么获取系统信息包括cpu、内存、硬盘信息等,刚开始使用Java自带的包进行获取,但这样获取的内存信息不够准确并且容易出现找不到相应包等错误,所以后面使用sigar插件进行获取。下面列举出...
主要介绍了Java获取mac地址的方法,涉及java针对系统硬件及IO操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
java 获取本机mac地址源码 计算机网络的实验内容
php与java获得电脑mac地址,根据不同系统获取,有window和linux
下面小编就为大家带来一篇java 获取mac地址的两种方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧