Java程序:获取Windows和Linux系统MAC地址


计算机可以通过名为网络接口控制器 (NIC)的硬件或软件组件连接到网络并与其他设备通信。NIC有助于创建帮助在两个设备之间传输和接收数据的层。MAC地址,也称为媒体访问控制地址,是NIC的唯一标识符。它由48位十六进制数字组成。它由数据链路层用于控制访问、确保数据完整性并识别网络设备。在本节中,我们将学习如何使用Java查找Windows和Linux机器的MAC地址。

设备的MAC地址不会改变。MAC地址被网络设备(如路由器交换机)使用。这些设备(如路由器和交换机)通常用于在网络上的不同设备之间转发数据包。当设备向同一网络上的另一个设备发送数据包时,数据包包括目标接收方的MAC地址在数据包头中。然后,网络设备使用从数据包头接收到的MAC地址将数据包传递给目标接收方。

现在,我们将详细了解用于查找Linux和Windows机器MAC地址的不同方法。Java提供InetAddress类和NetworkInterface类来执行MAC地址操作。

现在,我们将研究查找Windows和Linux机器MAC地址的不同代码实现。

查找Windows机器的MAC地址

我们将实现Java代码来查找Windows机器的MAC地址。查找MAC地址的算法如下。

算法

  • 使用InetAddress.getLocalHost()获取InetAddress实例。

  • 通过传递InetAddress对象,使用NetworkInterface.getByInetAddress()获取NetworkInterface实例。使用网络接口实例上的getHardwareAddress()获取MAC地址并将其存储在字节数组中。

  • 声明一个字符串构建器并循环遍历字节数组。

  • 通过使用format()将字节转换为十六进制数字来追加字节并打印它。

示例

在这个例子中,我们首先使用'InetAddress.getLocalHost()'创建了一个InteAddress实例,并将其传递给NetworkInterface构造函数,这有助于我们创建一个NetworkInterface对象。然后,我们在NetworkInterface对象上调用内置的'getHardwareAddress()'方法,以字节数组的形式获取mac地址。获得mac地址的字节数组后,我们使用字符串构建器对象并循环遍历MAC数组,将字节转换为十六进制格式并打印输出。

import java.net.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getLocalHost(); NetworkInterface networkInterface = NetworkInterface.getByInetAddress(address); byte[] mac = networkInterface.getHardwareAddress(); System.out.print("MAC address : "); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < mac.length; i++) { stringBuilder.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } System.out.println(stringBuilder.toString()); } }

输出

MAC address of this system is : 00-15-F2-5D-8A-80

查找Linux机器的MAC地址

我们将实现Java代码来查找Linux机器的MAC地址。查找MAC地址的步骤如下。

步骤

  • 导入所有必需的Java库

  • 使用NetworkInterface.getNetworkInterfaces()获取所有网络接口。

  • 对于每个网络,使用network.getHardwareAddress()获取MAC地址。

  • 如果MAC地址不为空,则声明一个字符串构建器并循环遍历MAC地址。

  • 通过使用format()将字节转换为十六进制数字来追加字节并打印它。

示例

在这个例子中,我们使用函数'NetworkInterface.getNetworkInterfaces()'获取NetworkInterfaces的枚举。然后,我们迭代这个枚举,直到枚举中存在NetworkInterface,我们使用'getHardwareAddress()'函数获取每个NetworkInterface的MAC地址,该函数通常返回MAC地址的字节数组,并且该数组通过使用StringBuilder对象和format()方法转换为十六进制值,并将所有内容附加到StringBuilder对象,并通过将StringBuilder对象转换为toString()方法来打印该值。因此,我们使用Java代码获得了Linux机器的MAC地址。

import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; public class Main{ public static void main(String[] args) { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface networkInterface = networkInterfaces.nextElement(); byte[] mac = networkInterface.getHardwareAddress(); if (mac != null) { System.out.print("MAC address : "); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < mac.length; i++) { stringBuilder.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } System.out.println(stringBuilder.toString()); } } } catch (Exception e) { e.printStackTrace(); } } }

输出

MAC address : 54-E1-AD-3F-2E-63
MAC address : 0A-B1-CD-2F-6A-83
MAC address : 12-34-56-78-9A-BC

因此,在本文中,我们学习了如何使用Java获取Windows和Linux机器的系统MAC地址。

更新于:2024年6月26日

2K+ 浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告