日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MAC地址进行验证的方法

發布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 因為是中文,不能用同一個方法獲取。只能另想辦法了

    總結

    以上是生活随笔為你收集整理的MAC地址进行验证的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。