列出网络interface地址
您可以从网络interface获得的最有用的信息之一是分配给它的 IP 地址列表。您可以使用两种方法之一从NetworkInterface
实例中获取此信息。第一种方法getInetAddresses()
返回InetAddress
的Enumeration
。另一个方法getInterfaceAddresses()
返回java.net.InterfaceAddress个实例的列表。当您需要有关interface地址的 IP 地址以外的更多信息时,可以使用此方法。例如,当地址是 IPv4 地址时,可能需要有关子网掩码和 Broadcast 地址的其他信息,在 IPv6 地址的情况下,可能需要有关网络前缀 Long 度的信息。
以下示例程序列出了计算机上的所有网络interface及其地址:
import java.io.*;
import java.net.*;
import java.util.*;
import static java.lang.System.out;
public class ListNets {
public static void main(String args[]) throws SocketException {
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets))
displayInterfaceInformation(netint);
}
static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
out.printf("Display name: %s\n", netint.getDisplayName());
out.printf("Name: %s\n", netint.getName());
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
out.printf("InetAddress: %s\n", inetAddress);
}
out.printf("\n");
}
}
以下是示例程序的输出示例:
Display name: TCP Loopback interface
Name: lo
InetAddress: /127.0.0.1
Display name: Wireless Network Connection
Name: eth0
InetAddress: /192.0.2.0