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.mzph.cn/news/387745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机添加多张图片css布局

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

跟随我在oracle学习php(21)

变量间的传值方式 总体说明&#xff1a; 1&#xff0c;这里讨论的传值方式是指&#xff1a;一个变量对另一个变量 2&#xff0c;它不仅仅适用于赋值语句&#xff0c;也适用于其他有同样含义的语句&#xff0c;比如&#xff1a;函数的实参到形参 3&#xff0c;传值方式只有2种&a…

【转】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…

【网络安全/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

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…

POJ_3262 Protecting the Flowers 【贪心】

一、题面 POJ3262 二、分析 这题要往贪心上面想应该还是很容易的&#xff0c;但问题是要证明为什么比值关系就能满足。 可以选择几个去分析&#xff0c;入1-6 与 2-15 和 1-6 与2-5 和 1-6 与 2- 12。 三、AC代码 1 #include <cstdio>2 #include <iostream>3 #in…

jquery如何阻止子元素继承父元素的事件(又称事件冒泡)

非常简单&#xff0c;子元素上添加如下代码即可 1 $(a).click(function(e){ 2 e.stopPropagation(); 3 }); 老版本为event,现在用e就行 转载于:https://www.cnblogs.com/chengbo2130/p/10152747.html

Beta 冲刺 (7/7)

团队信息 队名&#xff1a;爸爸饿了组长博客&#xff1a;here作业博客&#xff1a;here组员情况 组员1&#xff08;组长&#xff09;&#xff1a;王彬 过去两天完成了哪些任务 协助完成安卓端的整合完成安卓端的美化协助制作宣传视频 接下来的计划 & 还剩下哪些任务 I am d…

Java Web 学习与总结(一)Servlet基础

配置环境&#xff1a;https://www.cnblogs.com/qq965921539/p/9821374.html 简介&#xff1a; Servlet是Sun公司提供的一种实现动态网页的解决方案&#xff0c;在制定J2EE时引入它作为实现了基于Java语言的动态技术&#xff0c;目前流行的Web框架基本都基于Servlet技术&#xf…

堪称经典

程序员作为高智商、高收入、高压力群体&#xff0c;经常会有各种自嘲&#xff0c;而且还天生携带段子手基因。不信看看下面这些段子&#xff0c;一般人哪能懂&#xff01; 1、杀一个程序员不需要用枪&#xff0c;改三次需求就可以了 2、程序员退休后决定练习书法&#xff0c;于…

Judy Beta 第三天

概述 前端部分对于打包的流程以及相关 package.json 的配置都已经比较熟悉了&#xff0c;目前主要负责对新实现的 feature 做测试&#xff0c;以及参考 DAP 为后端明确数据交换的格式及参数内容等。 后端部分按照更新的 wiki 实现了变量展开&#xff0c;并且根据 DAP 的协议流程…

python学习中遇到的问题

2019独角兽企业重金招聘Python工程师标准>>> def contract_str():index 8db_size 8new_table_name b_str(index & (db_size-1))print new_table_name ImportError: No module named mysql.connector import mysql.connector as sql_connector Python保存时提…

Anti-Aliasing SSAA MSAA MLAA SRAA 简介

http://blog.csdn.net/codeboycjy/article/details/6312758 前两天在浏览游民星空的时候&#xff0c;小编居然在文章中挂了一篇技术文章&#xff0c;是关于SRAA的。对于AA的了解很少&#xff0c;正好入职之前还有几天的空闲时间&#xff0c;所以就这个机会把AA的一些基本算法简…

Qt的安装和使用中的常见问题(详细版)

对于太长不看的朋友&#xff0c;可参考Qt的安装和使用中的常见问题&#xff08;简略版&#xff09;。 目录 1、引入2、Qt简介3、Qt版本 3.1 查看安装的Qt版本3.2 查看当前项目使用的Qt版本3.3 查看当前项目使用的QtCreator版本3.4 Linux命令行下查看和使用不同版本的Qt4、Qt模块…

各行业大数据可视化界面参考

转载于:https://www.cnblogs.com/wangsongbai/p/10178096.html