爲什麼寫這個呢?因爲MAC可用於局域網驗證,提高安全性。
- /**
- * 獲取mac地址
物理地址是48位,別和ipv6搞錯了- * @author Administrator
- *
- */
- public class Test {
- /**
- * @param args
- * @throws UnknownHostException
- * @throws SocketException
- */
- public static void main(String[] args) throws UnknownHostException, SocketException {
- // TODO Auto-generated method stub
- //得到IP,輸出PC-201309011313/122.206.73.83
- InetAddress ia = InetAddress.getLocalHost();
- System.out.println(ia);
- getLocalMac(ia);
- }
- private static void getLocalMac(InetAddress ia) throws SocketException {
- // TODO Auto-generated method stub
- //獲取網卡,獲取地址
- byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
- System.out.println("mac數組長度:"+mac.length);
- StringBuffer sb = new StringBuffer("");
- for(int i=0; i<mac.length; i++) {
- if(i!=0) {
- sb.append("-");
- }
- //字節轉換爲整數
- int temp = mac[i]&0xff;
- String str = Integer.toHexString(temp);
- System.out.println("每8位:"+str);
- if(str.length()==1) {
- sb.append("0"+str);
- }else {
- sb.append(str);
- }
- }
- System.out.println("本機MAC地址:"+sb.toString().toUpperCase());
- }
- }
運行結果如下:
PC-201309011313/122.206.73.83 mac數組長度:6 每8位:d0 每8位:27 每8位:88 每8位:1f 每8位:89 每8位:51 本機MAC地址:D0-27-88-1F-89-51