java获取本机ip地址的方法怎么操作
问题描述:java获取本机ip地址的方法怎么操作
推荐答案 本回答由问问达人推荐
在Java中,你可以使用多种方法来获取本机的IP地址。下面将介绍三种常用的方法。
方法一:使用InetAddress类
InetAddress类提供了获取本机IP地址的简单方式。你可以通过调用其中的静态方法getLocalHost()来获取本机的InetAddress对象,然后再调用getHostAddress()方法获取本机的IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本机IP地址是:" + ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
上述代码将输出本机的IP地址。
方法二:使用NetworkInterface类
另一种获取本机IP地址的方法是使用NetworkInterface类。通过遍历所有的网络接口,我们可以获取每个网络接口对应的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetIPAddress {
public static void main(String[] args) {
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本机IP地址是:" + address.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代码将输出本机的所有IP地址,同时过滤掉了回环地址(loopback address)和本地链路地址(link-local address)。
方法三:使用System类和网络接口
还有一种获取本机IP地址的方法是使用System类和网络接口。通过调用System.getenv()方法获取操作系统的环境变量,然后根据操作系统的不同,找到对应的网络接口名称,并进一步获取IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Map;
public class GetIPAddress {
public static void main(String[] args) {
try {
Map env = System.getenv();
String os = System.getProperty("os.name").toLowerCase();
String networkInterfaceName = null;
if (os.contains("win")) {
networkInterfaceName = env.get("COMPUTERNAME");
} else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) {
networkInterfaceName = env.get("USER");
}
NetworkInterface networkInterface = NetworkInterface.getByName(networkInterfaceName);
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本机IP地址是:" + address.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代码根据操作系统类型获取对应的网络接口名称,并获取该网络接口的IPv4地址。
这些就是在Java中获取本机IP地址的三种常用方法。你可以根据自己的需求选择合适的方法来获取本机的IP地址。