
java如何获得计算机ip地址
用户关注问题
如何使用Java代码获取本机的IP地址?
我想通过Java程序获取电脑的IP地址,应该怎么写代码才能实现?
Java代码获取本机IP地址的方法
在Java中,可以利用InetAddress类的getLocalHost()方法获取本机地址,然后调用getHostAddress()来得到IP地址。示例代码如下:
import java.net.InetAddress;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ipAddr = localHost.getHostAddress();
System.out.println("本机IP地址是:" + ipAddr);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java如何获取所有网络接口的IP地址?
我的电脑有多个网络接口,想用Java获取所有接口上的IP地址,应该怎么操作?
获取所有网络接口IP地址的Java实现
可以通过Java的NetworkInterface类来遍历所有网络接口,获取各自关联的IP地址。代码示例:
import java.net.*;
import java.util.*;
public class ListAllIP {
public static void main(String[] args) {
try {
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(ni.getName() + " : " + addr.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
Java获取IP地址时如何区分IPv4和IPv6?
用Java获得的IP地址有IPv4和IPv6两种,如何判断并选择其中一种?
判断IP地址类型并过滤IPv4或IPv6的方案
获取到InetAddress对象后,可以调用isSiteLocalAddress()和实例of判断类型信息。要筛选IPv4地址,可以检查InetAddress是否是Inet4Address的实例。示例如下:
import java.net.*;
public class FilterIP {
public static void main(String[] args) throws Exception {
InetAddress[] addresses = InetAddress.getAllByName(InetAddress.getLocalHost().getHostName());
for (InetAddress addr : addresses) {
if (addr instanceof Inet4Address) {
System.out.println("IPv4地址:" + addr.getHostAddress());
} else if (addr instanceof Inet6Address) {
System.out.println("IPv6地址:" + addr.getHostAddress());
}
}
}
}