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地址。