📅  最后修改于: 2023-12-03 14:49:48.696000             🧑  作者: Mango
在 Java 中,我们可以通过以下几种方式来获取本机的 IP 地址:
使用 InetAddress 类中的 getLocalHost()
方法来获取本机的 IP 地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
System.out.println("IP 地址为:" + address.getHostAddress());
} catch (UnknownHostException e) {
System.out.println("无法获取本机 IP 地址");
e.printStackTrace();
}
}
}
使用 NetworkInterface 类中的 getNetworkInterfaces()
方法来获取本机所有的网络接口信息,然后遍历网络接口,找到与本机对应的 IP 地址。
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetIPAddress {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface currentInterface = interfaces.nextElement();
if (currentInterface.isUp() && !currentInterface.isLoopback()) {
Enumeration<InetAddress> addresses = currentInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (address.getHostAddress().indexOf(":") == -1) {
System.out.println("IP 地址为:" + address.getHostAddress());
}
}
}
}
} catch (SocketException e) {
System.out.println("无法获取本机 IP 地址");
e.printStackTrace();
}
}
}
使用 System 类中的 getProperty()
方法来获取系统属性,然后找到对应的 IP 地址。
public class GetIPAddress {
public static void main(String[] args) {
System.out.println("IP 地址为:" + System.getProperty("java.net.preferIPv4Stack", "false"));
}
}
这种方法只适用于 IPv4 地址。
以上三种方法可以满足绝大部分情况下获取本机 IP 地址的需求。