惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
A
About on SuperTechFans
Vercel News
Vercel News
博客园 - 【当耐特】
爱范儿
爱范儿
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
D
Docker
博客园 - 叶小钗
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
I
InfoQ
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - Star.Stroll

【Chrome扩展】Reload image 重载图片 [原创]RegularJS [原创]虚拟化技术真的能让企业降低成本吗? [原创]GCC动态链接库的编译与使用简例 [原创]Cygwin的中文支持(解决乱码) [原创]程序员日志:自制随笔程序 [原创]程序员日志:程序员的快捷方式 [原创]Java Socket(套接字)自学笔记1 [原创]透明的DIV提示框(兼容IE与Firefox) 深入HashCode方法 JavaScript代码实例:拖动对象 Drag Object (兼容:IE、Firefox、Opera ... ) Tomcat中用web.xml控制Web应用详解(2) Tomcat中用web.xml控制Web应用详解(1) java.sql.ResultSet 新增、更新、刪除資料 [原创]一个简单例子解释 Java 工厂模式 [原创]Object.clone()的作用与用法 Java 范型编程 Singleton模式(单态模式) Builder模式
[原创]纯Java获得本地MAC地址
Star.Stroll · 2009-02-20 · via 博客园 - Star.Stroll

  今天为了做一本地安全功能需要得到本机的MAC地址,上网寻找方法时发现全都是通过截取用Windows命令行的返回文本形式获得的,我感觉这样的方法并不好有很多弊端,继续Google百度一轮后依然无所获,只好自己翻JDK文档了。经过半个多小时的翻阅文档与代码调试后终于成功了,下面跟大家分享一下我的程序代码。

 1 import java.net.*;
 2 
 3 class Ipconfig{
 4 
 5     public static void main(String[] arguments) throws Exception{
 6         InetAddress ia = InetAddress.getLocalHost();//获取本地IP对象
 7         System.out.println("MAC ......... "+getMACAddress(ia));
 8     }
 9     
10     //获取MAC地址的方法
11     private static String getMACAddress(InetAddress ia)throws Exception{
12         //获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
13         byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
14         
15         //下面代码是把mac地址拼装成String
16         StringBuffer sb = new StringBuffer();
17         
18         for(int i=0;i<mac.length;i++){
19             if(i!=0){
20                 sb.append("-");
21             }
22             //mac[i] & 0xFF 是为了把byte转化为正整数
23             String s = Integer.toHexString(mac[i] & 0xFF);
24             sb.append(s.length()==1?0+s:s);
25         }
26         
27         //把字符串所有小写字母改为大写成为正规的mac地址并返回
28         return sb.toString().toUpperCase();
29     }
30 }

  其实代码非常简单,只是没人愿意去翻查文档而已。