MAC地址進行驗證的方法

需要對對應的MAC地址進行驗證的方法,以為很簡單就能過,鼓搗了半天以后才發現,我的機器是window7,查詢出來是亂碼,居然不給支持。沒辦法在網上繼續找資料。終于找到了,貼上來,以備不時之需。?
東西都有注釋,自己看吧,?
Java代碼收藏代碼
  1. import?java.io.BufferedReader;??
  2. import?java.io.IOException;??
  3. import?java.io.InputStreamReader;??
  4. import?java.net.InetAddress;??
  5. import?java.net.NetworkInterface;??
  6. ??
  7. /**?
  8. ?*?與系統相關的一些常用工具方法.?
  9. ?*??
  10. ?*?@author?lvbogun?
  11. ?*?@version?1.0.0?
  12. ?*/??
  13. public?class?SystemTool?{??
  14. ??
  15. ????/**?
  16. ?????*?獲取當前操作系統名稱.?return?操作系統名稱?例如:windows?xp,linux?等.?
  17. ?????*/??
  18. ????public?static?String?getOSName()?{??
  19. ????????return?System.getProperty("os.name").toLowerCase();??
  20. ????}??
  21. ??
  22. ????/**?
  23. ?????*?獲取unix網卡的mac地址.?非windows的系統默認調用本方法獲取.?
  24. ?????*?如果有特殊系統請繼續擴充新的取mac地址方法.?
  25. ?????*??
  26. ?????*?@return?mac地址?
  27. ?????*/??
  28. ????public?static?String?getUnixMACAddress()?{??
  29. ????????String?mac?=?null;??
  30. ????????BufferedReader?bufferedReader?=?null;??
  31. ????????Process?process?=?null;??
  32. ????????try?{??
  33. ????????????//?linux下的命令,一般取eth0作為本地主網卡??
  34. ????????????process?=?Runtime.getRuntime().exec("ifconfig?eth0");??
  35. ????????????//?顯示信息中包含有mac地址信息??
  36. ????????????bufferedReader?=?new?BufferedReader(new?InputStreamReader(??
  37. ????????????????????process.getInputStream()));??
  38. ????????????String?line?=?null;??
  39. ????????????int?index?=?-1;??
  40. ????????????while?((line?=?bufferedReader.readLine())?!=?null)?{??
  41. ????????????????//?尋找標示字符串[hwaddr]??
  42. ????????????????index?=?line.toLowerCase().indexOf("hwaddr");??
  43. ????????????????if?(index?>=?0)?{//?找到了??
  44. ????????????????????//?取出mac地址并去除2邊空格??
  45. ????????????????????mac?=?line.substring(index?+?"hwaddr".length()?+?1).trim();??
  46. ????????????????????break;??
  47. ????????????????}??
  48. ????????????}??
  49. ????????}?catch?(IOException?e)?{??
  50. ????????????e.printStackTrace();??
  51. ????????}?finally?{??
  52. ????????????try?{??
  53. ????????????????if?(bufferedReader?!=?null)?{??
  54. ????????????????????bufferedReader.close();??
  55. ????????????????}??
  56. ????????????}?catch?(IOException?e1)?{??
  57. ????????????????e1.printStackTrace();??
  58. ????????????}??
  59. ????????????bufferedReader?=?null;??
  60. ????????????process?=?null;??
  61. ????????}??
  62. ????????return?mac;??
  63. ????}??
  64. ??
  65. ????/**?
  66. ?????*?獲取widnows網卡的mac地址.?
  67. ?????*??
  68. ?????*?@return?mac地址?
  69. ?????*/??
  70. ????public?static?String?getWindowsMACAddress()?{??
  71. ????????String?mac?=?null;??
  72. ????????BufferedReader?bufferedReader?=?null;??
  73. ????????Process?process?=?null;??
  74. ????????try?{??
  75. ????????????//?windows下的命令,顯示信息中包含有mac地址信息??
  76. ????????????process?=?Runtime.getRuntime().exec("ipconfig?/all");??
  77. ????????????bufferedReader?=?new?BufferedReader(new?InputStreamReader(??
  78. ????????????????????process.getInputStream()));??
  79. ????????????String?line?=?null;??
  80. ????????????int?index?=?-1;??
  81. ????????????while?((line?=?bufferedReader.readLine())?!=?null)?{??
  82. ????????????????System.out.println(line);??
  83. ????????????????//?尋找標示字符串[physical??
  84. ????????????????index?=?line.toLowerCase().indexOf("physical?address");??
  85. ??????????????????
  86. ????????????????if?(index?>=?0)?{//?找到了??
  87. ????????????????????index?=?line.indexOf(":");//?尋找":"的位置??
  88. ????????????????????if?(index?>=?0)?{??
  89. ????????????????????????System.out.println(mac);??
  90. ????????????????????????//?取出mac地址并去除2邊空格??
  91. ????????????????????????mac?=?line.substring(index?+?1).trim();??
  92. ????????????????????}??
  93. ????????????????????break;??
  94. ????????????????}??
  95. ????????????}??
  96. ????????}?catch?(IOException?e)?{??
  97. ????????????e.printStackTrace();??
  98. ????????}?finally?{??
  99. ????????????try?{??
  100. ????????????????if?(bufferedReader?!=?null)?{??
  101. ????????????????????bufferedReader.close();??
  102. ????????????????}??
  103. ????????????}?catch?(IOException?e1)?{??
  104. ????????????????e1.printStackTrace();??
  105. ????????????}??
  106. ????????????bufferedReader?=?null;??
  107. ????????????process?=?null;??
  108. ????????}??
  109. ??
  110. ????????return?mac;??
  111. ????}??
  112. ??
  113. ????/**?
  114. ?????*?windows?7?專用?獲取MAC地址?
  115. ?????*??
  116. ?????*?@return?
  117. ?????*?@throws?Exception?
  118. ?????*/??
  119. ????public?static?String?getMACAddress()?throws?Exception?{??
  120. ??????????
  121. ????????//?獲取本地IP對象??
  122. ????????InetAddress?ia?=?InetAddress.getLocalHost();??
  123. ????????//?獲得網絡接口對象(即網卡),并得到mac地址,mac地址存在于一個byte數組中。??
  124. ????????byte[]?mac?=?NetworkInterface.getByInetAddress(ia).getHardwareAddress();??
  125. ??
  126. ????????//?下面代碼是把mac地址拼裝成String??
  127. ????????StringBuffer?sb?=?new?StringBuffer();??
  128. ??
  129. ????????for?(int?i?=?0;?i?<?mac.length;?i++)?{??
  130. ????????????if?(i?!=?0)?{??
  131. ????????????????sb.append("-");??
  132. ????????????}??
  133. ????????????//?mac[i]?&?0xFF?是為了把byte轉化為正整數??
  134. ????????????String?s?=?Integer.toHexString(mac[i]?&?0xFF);??
  135. ????????????sb.append(s.length()?==?1???0?+?s?:?s);??
  136. ????????}??
  137. ??
  138. ????????//?把字符串所有小寫字母改為大寫成為正規的mac地址并返回??
  139. ????????return?sb.toString().toUpperCase();??
  140. ????}??
  141. ??
  142. ????/**?
  143. ?????*?測試用的main方法.?
  144. ?????*??
  145. ?????*?@param?argc?運行參數.?
  146. ?????*?@throws?Exception?
  147. ?????*/??
  148. ????public?static?void?main(String[]?argc)?throws?Exception?{??
  149. ????????String?os?=?getOSName();??
  150. ????????System.out.println(os);??
  151. ????????if?(os.equals("windows?7"))?{??
  152. ????????????String?mac?=?getMACAddress();??
  153. ????????????System.out.println(mac);??
  154. ????????}?else?if?(os.startsWith("windows"))?{??
  155. ????????????//?本地是windows??
  156. ????????????String?mac?=?getWindowsMACAddress();??
  157. ????????????System.out.println(mac);??
  158. ????????}?else?{??
  159. ????????????//?本地是非windows系統?一般就是unix??
  160. ????????????String?mac?=?getUnixMACAddress();??
  161. ????????????System.out.println(mac);??
  162. ????????}??
  163. ????}??
  164. }??


找了很多都是只支持window和linux的。windows7 因為是中文,不能用同一個方法獲取。只能另想辦法了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA 分布式環境 Redis互斥鎖

開始的時候項目沒有添加互斥鎖&#xff0c;用的依然是老的思路&#xff0c;在并發量增加的情況下&#xff0c;遇到了很多的問題&#xff0c;包括數據庫重復讀等&#xff0c;想了下考慮增加 互斥鎖來排序對單個資源的操作。 Target(ElementType.METHOD) Retention(RetentionPoli…

相機添加多張圖片css布局

<section class"feedback-upload"><aside class"photos"><div></div><div class"camera"></div></aside><aside class"tips"><div><span>選填0~4</span></div&…

移動端滑動操作學習

(function(window,document){var Slide function(box,judge,fun){if (!(this instanceof Slide)) return new Slide(box,judge,fun);var startx,starty;box.addEventListener("touchstart", function(e) {e.preventDefault(); // 阻止瀏覽器默認事件startx parseIn…

深入學習Oracle分區表及分區索引

關于分區表和分區索引(About Partitioned Tables and Indexes)對于10gR2而言&#xff0c;基本上可以分成幾類&#xff1a; ?    Range(范圍)分區 ?    Hash(哈希)分區 ?    List(列表)分區 ?    以及組合分區&#xff1a;Range-Hash,R…

跟隨我在oracle學習php(21)

變量間的傳值方式 總體說明&#xff1a; 1&#xff0c;這里討論的傳值方式是指&#xff1a;一個變量對另一個變量 2&#xff0c;它不僅僅適用于賦值語句&#xff0c;也適用于其他有同樣含義的語句&#xff0c;比如&#xff1a;函數的實參到形參 3&#xff0c;傳值方式只有2種&a…

分區索引常用命令

一般使用LOCAL索引較為方便&#xff0c;而且維護代價較低&#xff0c;并且LOCAL索引是在分區的基礎上去創建索引&#xff0c;類似于在一個子表內部去創建索引&#xff0c;這樣開銷主要是區分分區上&#xff0c;很規范的管理起來&#xff0c;在OLAP系統中應用很廣泛&#xff1b;…

面向對象簡述

1&#xff0c;封裝&#xff1a;將對象的屬性集成在 class person:def __init__(self,name,idnum):self.namenameself.idnumidnum 2&#xff0c;繼承&#xff1a;子類自動擁有父類的的封裝&#xff0c;除了非私有之外 class person: def __init__(self,name,idnum): self.namena…

== 和 is 的區別

1. 比較的是值 a2 b2 print(a b) # True lis1 [1,2,3] lis2 [1,2,3] print(lis1 lis2) # True 2.is 是比較的是內存地址 a name print(id(a)) # 內存地址 字符串 a name b name print(a is b) # True 數字 n 10 n110 print(n is n1) # True 小數據池 數字 -5~256 字…

oracle數據量大時候分區索引思路

有一個分區表&#xff0c;按list分區&#xff0c;只有一個本地唯一索引&#xff0c;沒有外鍵和觸發器 當單個分區數量在2000萬以內時&#xff0c;insert效率還可以&#xff0c;每秒2.3-2.5萬條 但數據量越大&#xff0c;速度越慢&#xff0c; 目前單個分區數量達到3億&#xff…

【轉】WPF自定義控件與樣式(3)-TextBox RichTextBox PasswordBox樣式、水印、Label標簽、功能擴展...

一&#xff0e;前言.預覽 申明&#xff1a;WPF自定義控件與樣式是一個系列文章&#xff0c;前后是有些關聯的&#xff0c;但大多是按照由簡到繁的順序逐步發布的等。 本文主要是對文本輸入控件進行樣式開發&#xff0c;及相關擴展功能開發&#xff0c;主要內容包括&#xff1a;…

JVM調優 dump文件怎么生成和分析

1、獲取JVM的dump文件的兩種方式   1. JVM啟動時增加兩個參數: #出現 OOME 時生成堆 dump: -XX:HeapDumpOnOutOfMemoryError #生成堆文件地址&#xff1a; -XX:HeapDumpPath/home/liuke/jvmlogs/ 2. 發現程序異常前通過執行指令&#xff0c;直接生成當前JVM的dmp文件&#x…

關于 Oracle 分區索引的失效和重建

--創建測試表 SQL> create table t as select object_id,object_name from dba_objects;表已創建。SQL> select min(object_id),max(object_id) from t;MIN(OBJECT_ID) MAX(OBJECT_ID)-------------- --------------2 76083SQL> create table t_part(object…

【網絡安全/CTF】unseping 江蘇工匠杯

該題考察序列化反序列化及Linux命令執行相關知識。 題目 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($thi…

yum配置中driver-class-name: com.mysql.jdbc.Driver報錯

錯誤&#xff1a; 原因&#xff1a; 解決方法&#xff1a;把方框中的<scope>runtime</scope>刪掉 轉載于:https://www.cnblogs.com/zly123/p/10834958.html

gitlab中的CI

https://blog.csdn.net/chengzi_comm/article/details/78778284 轉載于:https://www.cnblogs.com/effortsing/p/10142720.html

增加表空間大小的四種方法

增加表空間大小的四種方法Meathod1&#xff1a;給表空間增加數據文件ALTER TABLESPACE app_data ADD DATAFILED:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF SIZE 50M;Meathod2&#xff1a;新增數據文件&#xff0c;并且允許數據文件自動增長ALTER TABLESPACE app_data …

Red Hat 8.0中設置光盤為軟件源

為什么80%的碼農都做不了架構師&#xff1f;>>> 以管理員身份登錄 su 編輯設置軟件源的repo文件 gedit /etc/yum.repos.d/redhat.repo 粘貼如下文本至空白處&#xff1a; [InstallMedia] nameRed Hat Enterprise Linux 8.0.0 mediaidNone metadata_expire-1 gpgche…

C++11并發編程:多線程std::thread

一&#xff1a;概述 C11引入了thread類&#xff0c;大大降低了多線程使用的復雜度&#xff0c;原先使用多線程只能用系統的API&#xff0c;無法解決跨平臺問題&#xff0c;一套代碼平臺移植&#xff0c;對應多線程代碼也必須要修改。現在在C11中只需使用語言層面的thread可以解…

圖像特征提取——韋伯局部描述符(WLD)

一、原理及概述 韋伯局部描述符&#xff08;WLD&#xff09;是一種魯棒性好、簡單高效的局部特征描述符。WLD由兩個部分組成&#xff1a;差分激勵和梯度方向。 其具體算法是對于給定的一幅圖像&#xff0c;通過對每個像素進行這兩個分量的計算來提取其差分激勵圖像和梯度方向圖…

Linux下Nagios的安裝與配置

Linux下Nagios的安裝與配置 一、Nagios簡介 Nagios是一款開源的電腦系統和網絡監視工具&#xff0c;能有效監控Windows、Linux和Unix的主機狀態&#xff0c;交換機路由器等網絡設置&#xff0c;打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員&am…