# 列出网络接口地址

> 原文： [https://docs.oracle.com/javase/tutorial/networking/nifs/listing.html](https://docs.oracle.com/javase/tutorial/networking/nifs/listing.html)

您可以从网络接口获得的最有用的信息之一是分配给它的 IP 地址列表。您可以使用以下两种方法之一从`NetworkInterface`实例获取此信息。第一种方法`getInetAddresses()`返回`InetAddress`的`Enumeration`。另一种方法`getInterfaceAddresses()`返回 [`java.net.InterfaceAddress`](https://docs.oracle.com/javase/8/docs/api/java/net/InterfaceAddress.html) 实例的列表。当您需要有关超出其 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

```