
java中如何获取ip地址
用户关注问题
如何用Java代码获取本机的IP地址?
我想知道用Java编写程序时,怎样获取当前机器的IP地址。
使用Java获取本机IP地址的方法
可以通过Java中的InetAddress类来获取本机IP地址。示例代码为:
InetAddress inetAddress = InetAddress.getLocalHost();
String ipAddress = inetAddress.getHostAddress();
System.out.println("本机IP地址: " + ipAddress);
这种方式通常返回本机的IPv4地址。
如何获取本机所有网络接口的IP地址?
如果机器有多个网络接口,怎么用Java获取所有接口的IP地址?
获取所有网络接口IP地址的方法
Java提供了NetworkInterface类,可以枚举所有网络接口及其对应的IP地址。示例代码:
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface ni = interfaces.nextElement();
Enumeration<InetAddress> addresses = ni.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress addr = addresses.nextElement();
System.out.println(addr.getHostAddress());
}
}
这段代码可以输出所有网络接口的IP地址,包括IPv4和IPv6。
Java中如何区分IPv4和IPv6地址?
获取IP地址后,怎么判断它是IPv4还是IPv6?
判断IPv4和IPv6的方式
InetAddress提供了isAnyLocalAddress()、isLoopbackAddress()等方法,但更直接的是查看InetAddress实例的类型。若是Inet4Address则为IPv4,Inet6Address则为IPv6。例如:
InetAddress addr = InetAddress.getByName("192.168.1.1");
if (addr instanceof Inet4Address) {
System.out.println("这是IPv4地址");
} else if (addr instanceof Inet6Address) {
System.out.println("这是IPv6地址");
}
利用这个特性可以根据地址类型做不同处理。