Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
network interface (网络接口) 是计算机与私有或公共网络之间的互连点。网络接口通常是网络接口卡(NIC),但不必具有物理形式。相反,网络接口可以用软件实现。例如,环回接口(IPv4 的 127.0.0.1 和 IPv6 的 ::1)不是物理设备,而是模拟网络接口的软件。环回接口通常用于测试环境。
java.net.NetworkInterface
类表示两种类型的接口。
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 一起使用。