java中通过网卡名称获取IP地址

Java教程 2025-08-07

复制代码代码如下:

package me.xuzs.sso.test;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.util.Enumeration;

public class InternetTest {

public static void main(String[] args) {

String netCard = "lo";

try {

Enumeration< NetworkInterface > netInterfaces = NetworkInterface

.getNetworkInterfaces();

if (netInterfaces.hasMoreElements()) {

NetworkInterface netInterface = netInterfaces.nextElement();

if (netCard.equals(netInterface.getName())) {

// 子接口,linux下会取到父接口??

Enumeration< NetworkInterface > subnetInterfaces = netInterface

.getSubInterfaces();

while (subnetInterfaces.hasMoreElements()) {

NetworkInterface subnetInterface = subnetInterfaces

.nextElement();

System.out.println(subnetInterface.getName());

Enumeration< InetAddress > subaddresses = netInterface

.getInetAddresses();

while (subaddresses.hasMoreElements()) {

InetAddress subaddress = subaddresses.nextElement();

System.out.println(subaddress.getHostAddress());

}

}

// 打印接口下所有IP

System.out.println(netInterface.getName());

Enumeration< InetAddress > addresses = netInterface

.getInetAddresses();

while (addresses.hasMoreElements()) {

InetAddress address = addresses.nextElement();

System.out.println(address.getHostAddress());

}

}

}

} catch (SocketException e) {

e.printStackTrace();

}

}

}