如何通过java获取Mac地址

做项目时遇到一个需求,需要获取客户端mac地址,我通过下面的java代码获取,但是得到的却是获取服务器本机的mac,地址,请问我该怎样获取到客户端mac地址?

InetAddress ia = InetAddress.getLocalHost();
//获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。

byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();

        //下面代码是把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);  
        }  

        String MacAddress = sb.toString().toUpperCase(); 
        log.error("mac地址"+MacAddress);
        entity.setClientMac(MacAddress);

getRemoteAddr,应该使用这个方法

客户端的mac地址,服务器是拿不到的。只能通过客户端拿到以后传给你。

http://www.jb51.net/article/73882.htm

http://cobble19.iteye.com/blog/828371

1、首先,创建工程,包,和一个类。

在此不加详述,我们直接看代码。

这里,我把这个类命名为GetMacAddr
2、这里,最最关键的就是这里这个方法。

我们通过NetworkInterface这个类来操作。

也就是通过getLocalHost()方法先得到本机IP,

然后调用getHardwareAddress()方法得到一个byte数组的地址。

我们把六位地址传到一个byte数组里面,然后输出来就是。

不多废话,看代码:

private void getMACAddr()

    throws SocketException, UnknownHostException {

  // 获得IP

  NetworkInterface netInterface =

    NetworkInterface.getByInetAddress(InetAddress.getLocalHost());

  // 获得Mac地址的byte数组

  byte[] macAddr = netInterface.getHardwareAddress();

  System.out.print("MAC Addr:\t");

  // 循环输出

  for (byte b : macAddr) {

    // 这里的toHexString()是自己写的格式化输出的方法,见下步。

    System.out.print(toHexString(b) + " ");

  }

}
3、上一步骤中,为什么会出现一个toHexString()方法呢?

  因为可能10进制转16进制时候可能会出现单字符,

所以,如果有出现单字符的情况,我们在其前面添加一个“0”做占位符。

这也是为了视觉的直观,也夹带着个人的习惯。

private static String toHexString(int integer) {

  // 将得来的int类型数字转化为十六进制数

  String str = Integer.toHexString((int) (integer & 0xff));

  // 如果遇到单字符,前置0占位补满两格

  if (str.length() == 1) {

    str = "0" + str;

  }

  return str;

}
4、然后,我们写一个简单的main方法测试一下。

public static void main(String[] args)

       throws SocketException, UnknownHostException {

  new GetMacAddr().getMACAddr();

}
5、结果无误,我们得到了本地的MAC地址。更多mac教程,欢迎关注mac.orsoon.com本站了解