需要对对应的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. * @author lvbogun
  10. * @version 1.0.0
  11. */
  12. public class SystemTool {
  13. /**
  14. * 获取当前操作系统名称. return 操作系统名称 例如:windows xp,linux 等.
  15. */
  16. public static String getOSName() {
  17. return System.getProperty("os.name").toLowerCase();
  18. }
  19. /**
  20. * 获取unix网卡的mac地址. 非windows的系统默认调用本方法获取.
  21. * 如果有特殊系统请继续扩充新的取mac地址方法.
  22. *
  23. * @return mac地址
  24. */
  25. public static String getUnixMACAddress() {
  26. String mac = null;
  27. BufferedReader bufferedReader = null;
  28. Process process = null;
  29. try {
  30. // linux下的命令,一般取eth0作为本地主网卡
  31. process = Runtime.getRuntime().exec("ifconfig eth0");
  32. // 显示信息中包含有mac地址信息
  33. bufferedReader = new BufferedReader(new InputStreamReader(
  34. process.getInputStream()));
  35. String line = null;
  36. int index = -1;
  37. while ((line = bufferedReader.readLine()) != null) {
  38. // 寻找标示字符串[hwaddr]
  39. index = line.toLowerCase().indexOf("hwaddr");
  40. if (index >= 0) {// 找到了
  41. // 取出mac地址并去除2边空格
  42. mac = line.substring(index + "hwaddr".length() + 1).trim();
  43. break;
  44. }
  45. }
  46. } catch (IOException e) {
  47. e.printStackTrace();
  48. } finally {
  49. try {
  50. if (bufferedReader != null) {
  51. bufferedReader.close();
  52. }
  53. } catch (IOException e1) {
  54. e1.printStackTrace();
  55. }
  56. bufferedReader = null;
  57. process = null;
  58. }
  59. return mac;
  60. }
  61. /**
  62. * 获取widnows网卡的mac地址.
  63. *
  64. * @return mac地址
  65. */
  66. public static String getWindowsMACAddress() {
  67. String mac = null;
  68. BufferedReader bufferedReader = null;
  69. Process process = null;
  70. try {
  71. // windows下的命令,显示信息中包含有mac地址信息
  72. process = Runtime.getRuntime().exec("ipconfig /all");
  73. bufferedReader = new BufferedReader(new InputStreamReader(
  74. process.getInputStream()));
  75. String line = null;
  76. int index = -1;
  77. while ((line = bufferedReader.readLine()) != null) {
  78. System.out.println(line);
  79. // 寻找标示字符串[physical
  80. index = line.toLowerCase().indexOf("physical address");
  81. if (index >= 0) {// 找到了
  82. index = line.indexOf(":");// 寻找":"的位置
  83. if (index >= 0) {
  84. System.out.println(mac);
  85. // 取出mac地址并去除2边空格
  86. mac = line.substring(index + 1).trim();
  87. }
  88. break;
  89. }
  90. }
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. } finally {
  94. try {
  95. if (bufferedReader != null) {
  96. bufferedReader.close();
  97. }
  98. } catch (IOException e1) {
  99. e1.printStackTrace();
  100. }
  101. bufferedReader = null;
  102. process = null;
  103. }
  104. return mac;
  105. }
  106. /**
  107. * windows 7 专用 获取MAC地址
  108. *
  109. * @return
  110. * @throws Exception
  111. */
  112. public static String getMACAddress() throws Exception {
  113. // 获取本地IP对象
  114. InetAddress ia = InetAddress.getLocalHost();
  115. // 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
  116. byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
  117. // 下面代码是把mac地址拼装成String
  118. StringBuffer sb = new StringBuffer();
  119. for (int i = 0; i < mac.length; i++) {
  120. if (i != 0) {
  121. sb.append("-");
  122. }
  123. // mac[i] & 0xFF 是为了把byte转化为正整数
  124. String s = Integer.toHexString(mac[i] & 0xFF);
  125. sb.append(s.length() == 1 ? 0 + s : s);
  126. }
  127. // 把字符串所有小写字母改为大写成为正规的mac地址并返回
  128. return sb.toString().toUpperCase();
  129. }
  130. /**
  131. * 测试用的main方法.
  132. *
  133. * @param argc 运行参数.
  134. * @throws Exception
  135. */
  136. public static void main(String[] argc) throws Exception {
  137. String os = getOSName();
  138. System.out.println(os);
  139. if (os.equals("windows 7")) {
  140. String mac = getMACAddress();
  141. System.out.println(mac);
  142. } else if (os.startsWith("windows")) {
  143. // 本地是windows
  144. String mac = getWindowsMACAddress();
  145. System.out.println(mac);
  146. } else {
  147. // 本地是非windows系统 一般就是unix
  148. String mac = getUnixMACAddress();
  149. System.out.println(mac);
  150. }
  151. }
  152. }

找了很多都是只支持window和linux的。windows7 因为是中文,不能用同一个方法获取。只能另想办法了

MAC地址进行验证的方法相关推荐

  1. mac地址随机变化的解决方法(安卓手机通用)不用ROOT

    mac地址随机变化的解决方法(安卓手机通用)不用ROOT 首先关闭wifi 1.进工程模式 *#*#3646633#*#* 2.点击 connectivity 3.点击 wifi 4.点击 nvram ...

  2. Java 跨平台获取 MAC 地址的两种方法

    前言 有时我们因为软件授权或者其它需要获取主机唯一标识而需要获取用户主机的MAC地址,而本文则将介绍如何通过Java来实现跨平台获取MAC地址的两种方法,同时具体的代码也已上传到GitHub. 如果不 ...

  3. 中兴网络设备交换机路由器查看MAC地址表项命令方法

    描述:中兴网络设备交换机路由器查看MAC地址表项命令方法 命令: show mac

  4. 获取MAC地址的四种方法(转)

    https://www.cnblogs.com/zlshmily/p/10058560.html zlshmily 在实际的应用系统中,我们往往会需要在程序运行时获取当前机器的网卡的MAC地址,以便作 ...

  5. 【转载】取得系统中网卡MAC地址的三种方法

    From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...

  6. android 取mac地址,Android手机获取Mac地址的几种方法,androidmac

    Android手机获取Mac地址的几种方法,androidmac 最常用的方法,通过WiFiManager获取: /** * 通过WiFiManager获取mac地址 * @param context ...

  7. 组播ip mac转换 c语言,组播IP地址与组播MAC地址之间的换算方法与例子

    组播IP地址与组播MAC地址之间的换算方法与例子 1个oui 有2 的24方个MAC地址 组播地址 :2的28次方,224.0.0.0-239.255.255.255 可用组播范围:0100.5E00 ...

  8. 组播IP地址与组播MAC地址之间的换算方法

    MAC地址介绍 络接口卡硬件地址(MAC)是在数据链路层由标准组织IEEE统一定义的. 该定义类型大体上分为: EtherNET 802.3 , Token Ring 802.5 , Token Bu ...

  9. RealARM 210开发板 u-boot传递mac地址到内核的方法

    如果您身边有一款Real210的开发板,而且想修改系统启动后的mac地址.那么本记录提供两种方法. 第一种方法:直接修改mac的配置值 首先找到文件mach-smdkv210.c位置在/arch/ar ...

最新文章

  1. 为什么mac运行变慢,如何提升mac运行速度
  2. ajax servlet增删改查,Servlet ajax 文件上传和JDBC+Servler用户表增删改查
  3. python对角线图_python对角线图_python – 在Seaborn Jointplot上绘制对角线(相等的线)...
  4. 解决pandas不计算/不保存运算结果/数值不变的问题
  5. Titlemizer 随机相关的标题生成器插件
  6. 返回固定页面的web服务器
  7. 这就是程序员被大厂偏爱的实力!
  8. swift:创建滚动视图的图片轮播器
  9. el表达式判断不为空_Java学习72天---EL和JSTL表达式学完.
  10. redis分布式锁的复杂实现
  11. java 动态修改prooper_java中OOP自己总结的知识点
  12. STM32F1开发指南笔记46----字库原理及汉字库创建
  13. 运放专题:电压比较器
  14. FDDB人脸数据集dataset的dataset数据集的制作
  15. 大规模sip信令存储、查询和实时跟踪的实现
  16. Solidworks 3D Onshape 3D 繪圖自學分享
  17. gensim安装教程
  18. java 类型转换
  19. 苹果开发者账号/AppleID如何更改绑定的手机号
  20. 单招计算机面试考什么,单招考试笔试考什么?面试考什么?

热门文章

  1. ruby 怎么抛异常_Ruby中的异常处理
  2. 十、非规则组织分析及其数学模型——锯齿形斜纹组织
  3. kafka数据不丢失不重复_超高速底层系统数据复制,安全精准不丢失
  4. 计蒜客可以做计算机编程吗,如果你的编程能力不足以支撑你成为工程师的野心,不妨到计蒜客上学学看...
  5. 2013_changsha_onsite
  6. PyCharm怎么关闭端口,解决端口占用问题
  7. 数据可视化【十一】树状图
  8. C语言实现单链表操作
  9. 蓝桥杯嵌入式第七届模拟题 代码
  10. truncate、rename函数的使用