如何利用NetworkInterface获取服务器MAC地址

论坛 期权论坛 脚本     
niminba   2021-5-23 02:57   678   0

在很多时候,我们需要获得服务器硬件信息(比如MAC地址),常用的有几种的方式:
•使用命令行程序获得硬盘信息,然后通过Runtime.getRuntime().exec获得输出流,然后通过字符串分析获得MAC地址
•编译本地程序,然后通过JNI调用

以上两种方式都需要区分不同的操作系统平台,分别编码,比较麻烦,比如
• windows平台需要使用iptables /all命令
•linux平台需要使用ifconfig命令

今天介绍一种通用的跨平台的操作方式,那就是JDK自带的NetworkInterface接口,该接口在JDK1.4已经出现,但是功能比较少,JDK1.6之后新增了不少新功能,比较不错。

具体功能大家可以参考API文档,这里主要介绍一下如何获得服务器MAC地址,代码如下,有注释,不多讲。

复制代码 代码如下:

//获取所有网卡的MAC地址       
public static List<String> getAllMac() {
                List<String> list = new ArrayList<String>();
                try {
                        Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();// 返回所有网络接口的一个枚举实例
                        while (e.hasMoreElements()) {
                                NetworkInterface network = e.nextElement();// 获得当前网络接口
                                if (network != null) {
                                        if (network.getHardwareAddress() != null) {
                                                // 获得MAC地址
                                                //结果是一个byte数组,每项是一个byte,我们需要通过parseByte方法转换成常见的十六进制表示
                                                byte[] addres = network.getHardwareAddress();
                                                StringBuffer sb = new StringBuffer();
                                                if (addres != null && addres.length > 1) {
                                                        sb.append(parseByte(addres[0])).append(":").append(
                                                                        parseByte(addres[1])).append(":").append(
                                              =鍌>G:鍌r'/v"&V+G ZW ф7" M %!zs>cф7" 鍌r/v"Kr7kboB>[%:> ZW>> M:>[s:>jbB7ЁQT:>jrO6WQUWM:>[s:>jB7s:>bBbn{:>AРs:>bBb 疾>s:>bB:>bBbfk.:>
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP