获取本机IP地址和MAC地址是一个常见的需求,可以通过Java编程来实现。下面是实现该功能的步骤及相关代码。

流程图

graph LR
A[开始] --> B[获取网络接口列表]
B --> C[遍历网络接口]
C --> D[获取IP地址]
D --> E[获取MAC地址]
E --> F[展示结果]
F --> G[结束]

步骤及代码

  1. 获取网络接口列表

首先,我们需要获取本机上的所有网络接口,可以使用Java的NetworkInterface类的getNetworkInterfaces()方法来获取网络接口列表。

Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
  1. 遍历网络接口

接下来,我们需要遍历网络接口列表,找到我们需要的网络接口。这里我们假设我们要获取的是第一个可用的网络接口。

while (interfaces.hasMoreElements()) {
    NetworkInterface networkInterface = interfaces.nextElement();
    // 判断该网络接口是否可用
    if (networkInterface.isUp() && !networkInterface.isLoopback() && !networkInterface.isVirtual()) {
        // 获取该网络接口的IP和MAC地址
        // 接下来的步骤将在下文中展示
        break;
    }
}
  1. 获取IP地址

获取IP地址可以通过遍历网络接口的InetAddress列表来获取。我们可以使用networkInterface.getInetAddresses()方法获取该列表,并选择第一个IPv4地址作为本机的IP地址。

Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
    InetAddress address = addresses.nextElement();
    if (address instanceof Inet4Address) {
        String ipAddress = address.getHostAddress();
        // 在这里可以对IP地址进行进一步处理,如打印、存储等
        break;
    }
}
  1. 获取MAC地址

获取MAC地址可以通过遍历网络接口的HardwareAddress来获取。我们可以使用networkInterface.getHardwareAddress()方法来获取MAC地址。

byte[] macAddress = networkInterface.getHardwareAddress();
StringBuilder mac = new StringBuilder();
if (macAddress != null) {
    for (byte b : macAddress) {
        mac.append(String.format("%02X-", b));
    }
    if (mac.length() > 0) {
        mac.deleteCharAt(mac.length() - 1);
    }
}
String macAddress = mac.toString();
// 在这里可以对MAC地址进行进一步处理,如打印、存储等
  1. 展示结果

最后,我们可以将获取到的IP地址和MAC地址展示给用户。

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

完整代码如下所示:

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

public class GetIPAddressAndMACAddress {

    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface networkInterface = interfaces.nextElement();
                if (networkInterface.isUp() && !networkInterface.isLoopback() && !networkInterface.isVirtual()) {
                    Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                    while (addresses.hasMoreElements()) {
                        InetAddress address = addresses.nextElement();
                        if (address instanceof Inet4Address) {
                            String ipAddress = address.getHostAddress();
                            byte[] macAddress = networkInterface.getHardwareAddress();
                            StringBuilder mac = new StringBuilder();
                            if (macAddress != null) {
                                for (byte b : macAddress) {
                                    mac.append(String.format("%02X-", b));
                                }
                                if (mac.length() > 0) {
                                    mac.deleteCharAt(mac.length() - 1);
                                }
                            }
                            String macAddressStr = mac.toString();
                            System.out.println("IP地址:" + ipAddress);
                            System.out.println("MAC地址:" + macAddressStr);
                            break;
                        }
                    }
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个示例代码将输出本机的IP地址和MAC地址。

希望通过以上步骤和代码的详细解释,你能够理解并掌握如何使用Java获取本机的IP地址和MAC地址。有任何问题欢迎随时提问。