在很多时候,我们需要获得服务器硬件信息(比如MAC地址),常用的有几种的方式: •使用命令行程序获得硬盘信息,然后通过Runtime.getRuntime().exec获得输出流,然后通过字符串分析获得MAC地址 •编译本地程序,然后通过JNI调用
以上两种方式都需要区分不同的操作系统平台,分别编码,比较麻烦,比如 • windows平台需要使用iptables /all命令 •linux平台需要使用ifconfig命令
今天介绍一种通用的跨平台的操作方式,那就是JDK自带的NetworkInterface接口,该接口在JDK1.4已经出现,但是功能比较少,JDK1.6之后新增了不少新功能,比较不错。
具体功能大家可以参考API文档,这里主要介绍一下如何获得服务器MAC地址,代码如下,有注释,不多讲。
//获取所有网卡的MAC地址 public static List<String> getAllMac() { List<String> list = new ArrayList<String>(); try { Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();// 返回所有网络接口的一个枚举实例 while (e.hasMoreElements()) { NetworkInterface network = e.nextElement();// 获得当前网络接口 if (network != null) { if (network.getHardwareAddress() != null) { // 获得MAC地址 //结果是一个byte数组,每项是一个byte,我们需要通过parseByte方法转换成常见的十六进制表示 byte[] addres = network.getHardwareAddress(); StringBuffer sb = new StringBuffer(); if (addres != null && addres.length > 1) { sb.append(parseByte(addres[0])).append(":").append( parseByte(addres[1])).append(":").append(  =鍌>G:鍌r'/v"&V+G ZWф7"M %!zs>cф7"鍌r/v"Kr7kboB>[%:>ZW>>M:>[s:>jbB7ЁQT:>jrO6WQUWM:>[s:>jB7s:>bBbn{:>AРs:>bBb
疾>s:>bB:>bBbfk.:>
|