该Java教程适用于JDK 8。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言变化以获取Java SE 9及其后续版本中更新的语言特性的摘要。
请参阅JDK发布说明以获取有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息。
一个网络接口是计算机与私有或公共网络之间的连接点。网络接口通常是网络接口卡(NIC),但不一定要有物理形式。相反,网络接口可以在软件中实现。例如,回环接口(127.0.0.1用于IPv4和::1用于IPv6)不是物理设备,而是一个模拟网络接口的软件。回环接口通常在测试环境中使用。
java.net.NetworkInterface
类表示这两种类型的接口。
NetworkInterface对于多宿主系统非常有用,多宿主系统是指具有多个NIC的系统。使用NetworkInterface
,您可以指定用于特定网络活动的NIC。
例如,假设您有一台配置了两个NIC的机器,并且您想要向服务器发送数据。您可以像这样创建一个socket:
Socket soc = new java.net.Socket(); soc.connect(new InetSocketAddress(address, port));
发送数据时,系统确定使用哪个接口。但是,如果您有偏好或需要指定使用哪个NIC,您可以查询系统以获取适当的接口,并找到要使用的接口上的地址。当您创建并绑定到该地址的socket时,系统将使用相关的接口。例如:
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一起使用,超出了此处描述的两种用途。