在 Java 中,你可以使用多种方式获取本机的 IP 地址。下面我会介绍几种常见的方法,并提供相应的示例代码以及可能用到的第三方库的 Maven 和 Gradle 依赖坐标。
InetAddress
类提供了许多用于处理 IP 地址的静态方法。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Main {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println("Host Name: " + localhost.getHostName());
System.out.println("IP Address: " + localhost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
NetworkInterface
类允许你获取本机所有网络接口的信息,包括 IP 地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
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();
Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
System.out.println("Interface: " + networkInterface.getDisplayName());
System.out.println("IP Address: " + address.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
这是一个常用的网络操作库,可以方便地获取本机 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 Main {
public static void main(String[] args) {
SubnetUtils.SubnetInfo subnetInfo = new SubnetUtils("192.168.1.0/24").getInfo();
System.out.println("IP Address: " + subnetInfo.getAddress());
}
}
这里的示例使用了 SubnetUtils
类从子网中获取 IP 地址。
请注意,这只是一些获取本机 IP 地址的方法。在实际应用中,选择哪种方法取决于你的需求和上下文。