# 什么是网络接口？

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

_ 网络接口 _ 是计算机与私有或公共网络之间的互连点。网络接口通常是网络接口卡（NIC），但不必具有物理形式。相反，网络接口可以用软件实现。例如，环回接口（IPv4 的 `127.0.0.1` 和 IPv6 的 `:: 1` ）不是物理设备，而是模拟网络接口的软件。环回接口通常用于测试环境。

[`java.net.NetworkInterface`](https://docs.oracle.com/javase/8/docs/api/java/net/NetworkInterface.html) 类表示两种类型的接口。

`NetworkInterface` 对多宿主系统很有用，该系统是一个具有多个 NIC 的系统。使用`NetworkInterface`，您可以指定用于特定网络活动的 NIC。

例如，假设您的计算机具有两个已配置的 NIC，并且您希望将数据发送到服务器。你创建一个这样的套接字：

```
Socket soc = new java.net.Socket();
soc.connect(new InetSocketAddress(address, port));

```

为了发送数据，系统确定使用哪个接口。但是，如果您有首选项或需要指定要使用的 NIC，则可以在系统中查询相应的接口，并在要使用的接口上查找地址。创建套接字并将其绑定到该地址时，系统将使用关联的接口。例如：

```
NetworkInterface nif = NetworkInterface.getByName("bge0");
Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();

Socket soc = new java.net.Socket();
soc.bind(new InetSocketAddress(nifAddresses.nextElement(), 0));
soc.connect(new InetSocketAddress(address, port));

```

您还可以使用`NetworkInterface`标识要加入多播组的本地接口。例如：

```
NetworkInterface nif = NetworkInterface.getByName("bge0");
MulticastSocket ms = new MulticastSocket();
ms.joinGroup(new InetSocketAddress(hostname, port), nif);

```

除了此处描述的两种用法之外，NetworkInterface 还可以通过许多其他方式与 Java API 一起使用。