MAC地址进行验证的方法
生活随笔
收集整理的這篇文章主要介紹了
MAC地址进行验证的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需要對對應的MAC地址進行驗證的方法,以為很簡單就能過,鼓搗了半天以后才發現,我的機器是window7,查詢出來是亂碼,居然不給支持。沒辦法在網上繼續找資料。終于找到了,貼上來,以備不時之需。?
東西都有注釋,自己看吧,?
Java代碼 import?java.io.BufferedReader;?? import?java.io.IOException;?? import?java.io.InputStreamReader;?? import?java.net.InetAddress;?? import?java.net.NetworkInterface;?? ?? /**? ?*?與系統相關的一些常用工具方法.? ?*?? ?*?@author?lvbogun? ?*?@version?1.0.0? ?*/?? public?class?SystemTool?{?? ?? ????/**? ?????*?獲取當前操作系統名稱.?return?操作系統名稱?例如:windows?xp,linux?等.? ?????*/?? ????public?static?String?getOSName()?{?? ????????return?System.getProperty("os.name").toLowerCase();?? ????}?? ?? ????/**? ?????*?獲取unix網卡的mac地址.?非windows的系統默認調用本方法獲取.? ?????*?如果有特殊系統請繼續擴充新的取mac地址方法.? ?????*?? ?????*?@return?mac地址? ?????*/?? ????public?static?String?getUnixMACAddress()?{?? ????????String?mac?=?null;?? ????????BufferedReader?bufferedReader?=?null;?? ????????Process?process?=?null;?? ????????try?{?? ????????????//?linux下的命令,一般取eth0作為本地主網卡?? ????????????process?=?Runtime.getRuntime().exec("ifconfig?eth0");?? ????????????//?顯示信息中包含有mac地址信息?? ????????????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?>=?0)?{//?找到了?? ????????????????????//?取出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;?? ????}?? ?? ????/**? ?????*?獲取widnows網卡的mac地址.? ?????*?? ?????*?@return?mac地址? ?????*/?? ????public?static?String?getWindowsMACAddress()?{?? ????????String?mac?=?null;?? ????????BufferedReader?bufferedReader?=?null;?? ????????Process?process?=?null;?? ????????try?{?? ????????????//?windows下的命令,顯示信息中包含有mac地址信息?? ????????????process?=?Runtime.getRuntime().exec("ipconfig?/all");?? ????????????bufferedReader?=?new?BufferedReader(new?InputStreamReader(?? ????????????????????process.getInputStream()));?? ????????????String?line?=?null;?? ????????????int?index?=?-1;?? ????????????while?((line?=?bufferedReader.readLine())?!=?null)?{?? ????????????????System.out.println(line);?? ????????????????//?尋找標示字符串[physical?? ????????????????index?=?line.toLowerCase().indexOf("physical?address");?? ?????????????????? ????????????????if?(index?>=?0)?{//?找到了?? ????????????????????index?=?line.indexOf(":");//?尋找":"的位置?? ????????????????????if?(index?>=?0)?{?? ????????????????????????System.out.println(mac);?? ????????????????????????//?取出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;?? ????}?? ?? ????/**? ?????*?windows?7?專用?獲取MAC地址? ?????*?? ?????*?@return? ?????*?@throws?Exception? ?????*/?? ????public?static?String?getMACAddress()?throws?Exception?{?? ?????????? ????????//?獲取本地IP對象?? ????????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);?? ????????}?? ?? ????????//?把字符串所有小寫字母改為大寫成為正規的mac地址并返回?? ????????return?sb.toString().toUpperCase();?? ????}?? ?? ????/**? ?????*?測試用的main方法.? ?????*?? ?????*?@param?argc?運行參數.? ?????*?@throws?Exception? ?????*/?? ????public?static?void?main(String[]?argc)?throws?Exception?{?? ????????String?os?=?getOSName();?? ????????System.out.println(os);?? ????????if?(os.equals("windows?7"))?{?? ????????????String?mac?=?getMACAddress();?? ????????????System.out.println(mac);?? ????????}?else?if?(os.startsWith("windows"))?{?? ????????????//?本地是windows?? ????????????String?mac?=?getWindowsMACAddress();?? ????????????System.out.println(mac);?? ????????}?else?{?? ????????????//?本地是非windows系統?一般就是unix?? ????????????String?mac?=?getUnixMACAddress();?? ????????????System.out.println(mac);?? ????????}?? ????}?? }??
找了很多都是只支持window和linux的。windows7 因為是中文,不能用同一個方法獲取。只能另想辦法了
東西都有注釋,自己看吧,?
Java代碼
找了很多都是只支持window和linux的。windows7 因為是中文,不能用同一個方法獲取。只能另想辦法了
總結
以上是生活随笔為你收集整理的MAC地址进行验证的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker命令及挂载
- 下一篇: 深入学习Oracle分区表及分区索引