Java 获取Windows和Linux设备的系统MAC地址

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的实例。

  • 使用NetworkInterface.getByInetAddress()并传递InetAddress对象来获取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地址不为null,则声明一个字符串构建器,并循环遍历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地址。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程