Java获取IP和MAC地址

介绍

在Java开发中,获取设备的IP和MAC地址是一个常见的需求。IP地址是用于唯一标识设备的网络地址,而MAC地址是设备的物理地址。本文将介绍如何使用Java获取设备的IP和MAC地址。

流程

下面是获取设备IP和MAC地址的整个流程:

journey
  title 获取设备IP和MAC地址的流程
  section 初始化
    开发者初始化一个空的IP地址对象
    开发者初始化一个空的MAC地址对象
  section 获取IP地址
    开发者通过Java提供的API获取IP地址
    开发者将获取到的IP地址存储到IP地址对象中
  section 获取MAC地址
    开发者通过Java提供的API获取MAC地址
    开发者将获取到的MAC地址存储到MAC地址对象中
  section 输出结果
    开发者将IP地址对象和MAC地址对象的值输出到控制台

代码实现

步骤1:初始化

首先,我们需要初始化一个空的IP地址对象和一个空的MAC地址对象。可以使用Java提供的InetAddress和NetworkInterface类来实现。

import java.net.InetAddress;
import java.net.NetworkInterface;

public class GetIPMACAddress {
    public static void main(String[] args) {
        // 初始化IP地址对象
        InetAddress ipAddress = null;
        // 初始化MAC地址对象
        NetworkInterface networkInterface = null;
    }
}

步骤2:获取IP地址

接下来,我们使用getLocalHost方法从InetAddress类中获取本地主机的IP地址,并将其存储到IP地址对象中。

try {
    // 获取本地主机的IP地址
    ipAddress = InetAddress.getLocalHost();
} catch (Exception e) {
    e.printStackTrace();
}

步骤3:获取MAC地址

然后,我们使用getNetworkInterfaces方法从NetworkInterface类中获取所有网络接口,并遍历每个接口以找到MAC地址。我们选择第一个非虚拟和非回环接口的MAC地址,并将其存储到MAC地址对象中。

try {
    // 获取所有网络接口
    Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
    while (networkInterfaces.hasMoreElements()) {
        NetworkInterface networkInterface = networkInterfaces.nextElement();
        // 排除虚拟和回环接口
        if (!networkInterface.isVirtual() && !networkInterface.isLoopback()) {
            // 获取MAC地址
            byte[] macBytes = networkInterface.getHardwareAddress();
            // MAC地址转换为字符串形式
            StringBuilder macAddress = new StringBuilder();
            for (int i = 0; i < macBytes.length; i++) {
                macAddress.append(String.format("%02X%s", macBytes[i], (i < macBytes.length - 1) ? "-" : ""));
            }
            // 存储MAC地址到MAC地址对象
            ipAddress = networkInterface;
            break;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

步骤4:输出结果

最后,我们将IP地址对象和MAC地址对象的值输出到控制台。

System.out.println("IP地址: " + ipAddress.getHostAddress());
System.out.println("MAC地址: " + macAddress);

完整代码如下:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class GetIPMACAddress {
    public static void main(String[] args) {
        // 初始化IP地址对象
        InetAddress ipAddress = null;
        // 初始化MAC地址对象
        NetworkInterface networkInterface = null;

        try {
            // 获取本地主机的IP地址
            ipAddress = InetAddress.getLocalHost();

            // 获取所有网络接口
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                // 排除虚拟和回环接口
                if (!networkInterface.isVirtual() && !networkInterface.isLoopback()) {
                    // 获取MAC地址
                    byte[] macBytes = networkInterface.getHardwareAddress();
                    // MAC地址转换为字符串形式
                    StringBuilder macAddress = new StringBuilder();
                    for (int i = 0; i < macBytes.length; i++) {
                        macAddress.append(String.format("%02X%s", macBytes[i], (i < macBytes.length - 1) ? "-" : ""));
                    }
                    // 存储MAC地址到MAC地址对象
                    ipAddress = networkInterface;
                    break;
                }
            }

            System.out.println("IP地址: " + ipAddress.getHost