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