
java如何获取想要的ip地址
用户关注问题
如何在Java中获取本机所有IP地址?
我想知道如何使用Java代码列出本机所有可用的IP地址,包括IPv4和IPv6。
使用Java枚举网络接口获取所有IP地址
可以通过Java的NetworkInterface类来获取本机所有网络接口,再遍历每个接口的InetAddress列表。这样可以获取所有绑定到本机的IP地址,包括IPv4和IPv6。示例代码如下:
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
NetworkInterface netint = nets.nextElement();
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
System.out.println(inetAddress.getHostAddress());
}
}
如何在Java中获取指定网卡的IP地址?
我需要获取某个特定网卡(比如eth0或wlan0)的IP地址,Java中该怎么做?
根据网卡名称获取对应的IP地址
可以使用NetworkInterface.getByName方法获取指定名称的网卡对象,再遍历其InetAddress,找出对应IP地址。例如:
NetworkInterface networkInterface = NetworkInterface.getByName("eth0");
Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress inetAddress = addresses.nextElement();
System.out.println(inetAddress.getHostAddress());
}
这段代码会打印eth0网卡绑定的所有IP地址。
如何在Java中获取本地主机IPv4地址?
我只想获取本机的IPv4地址,而不是IPv6或其他形式的地址,有没有简便的方法?
过滤获取IPv4地址的代码示例
在获取IP地址时,可以判断地址类型,筛选出IPv4格式。示例代码:
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
NetworkInterface netint = nets.nextElement();
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (inetAddress instanceof Inet4Address) { // 判断是否为IPv4
System.out.println(inetAddress.getHostAddress());
}
}
}