Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以从网络接口获得的最有用的信息之一是分配给它的 IP 地址列表。你可以使用以下两种方法之一从 NetworkInterface
实例获取此信息。第一种方法 getInetAddresses()
,返回 InetAddress
的 Enumeration
。另一种方法 getInterfaceAddresses()
返回 java.net.InterfaceAddress
实例的列表。当你需要有关超出其 IP 地址的接口地址的更多信息时,将使用此方法。例如,当地址是 IPv4 地址时,你可能需要有关子网掩码和广播地址的其他信息,如果是 IPv6 地址,则可能需要网络前缀长度。
以下示例程序列出了计算机上的所有网络接口及其地址:
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