在 Java 中获取本地 IP 地址有几种方式,我将为您介绍三种常用的方式:使用 InetAddress
类、使用 NetworkInterface
类和使用第三方库(例如 Apache Commons Net)。下面是每种方式的详细步骤流程和示例代码:
InetAddress
类提供了用于获取本地主机的 IP 地址的方法。
步骤流程:
InetAddress.getLocalHost()
方法获取本地主机的 InetAddress
对象。getHostAddress()
方法获取本地 IP 地址的字符串表示。示例代码:
import java.net.InetAddress;
public class LocalIPExample {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getLocalHost();
String localIpAddress = localhost.getHostAddress();
System.out.println("Local IP Address: " + localIpAddress);
} catch (Exception e) {
e.printStackTrace();
}
}
}
NetworkInterface
类允许您获取网络接口的信息,包括 IP 地址。
步骤流程:
NetworkInterface.getNetworkInterfaces()
获取所有网络接口的枚举。示例代码:
import java.net.*;
import java.util.*;
public class NetworkInterfaceExample {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress address = inetAddresses.nextElement();
if (address instanceof Inet4Address && !address.isLoopbackAddress()) {
System.out.println("Local IP Address: " + address.getHostAddress());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
您还可以使用 Apache Commons Net 库中的方法来获取本地 IP 地址。
步骤流程:
org.apache.commons.net.util.SubnetUtils
类来获取本地 IP 地址。Maven 依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
Gradle 依赖:
implementation 'commons-net:commons-net:3.8.0'
示例代码:
import org.apache.commons.net.util.SubnetUtils;
public class ApacheCommonsNetExample {
public static void main(String[] args) {
try {
SubnetUtils utils = new SubnetUtils("192.168.1.0/24");
String[] addresses = utils.getInfo().getAllAddresses();
System.out.println("Local IP Address: " + addresses[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
请注意,这里的示例使用了一个特定的子网,您可以根据您的网络配置进行调整。
以上是获取本地 IP 地址的几种常见方法,您可以根据您的需求选择其中一种适合的方法。