文档

Java™ 教程-Java Tutorials 中文版
什么是网络接口?
Trail: Custom Networking
Lesson: Programmatic Access to Network Parameters

什么是网络接口?

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 一起使用。


Previous page: Programmatic Access to Network Parameters
Next page: Retrieving Network Interfaces