一、创建NetworkInterface对象的两个静态方法
NetworkInerface类和InetAddress一样,也没有public的构造方法。因此,必须通过它的两个静态方法来创建NetworkInterface对象。可以使用两种方法来创建NetworkInterface对象:网络接口名(getByName方法)和IP地址(getByInetAddress方法)。
1. getByName方法
这个方法可以通过网络接口名来创建NetworkInterface对象。这个网络接口名并不是计算机名,而是用于标识物理或逻辑网络接口的名字,一般是由操作系统设置的。网络接口名在大多数操作系统上(包括Windows、Linux和Unix)是以eth开头,后面是网络接口的索引号,从0开始。如本机安了三块网卡,那么网络接口名就依次是eth0、eth1和eth2。NetworkInterface对象的toString方法可以返回网络接口的名称、显示名和这个网络接口上绑字的所有IP地址等信息。当网络接口名不存在时,getByName返回null。getByName方法定义如下:
public
static
NetworkInterface getByName(String name)
throws
SocketException
下面的代码是一个显示指定网络接口信息的程序,网络接口名通过命令行参数传入。
package
mynet;
import java.net. * ;
public class MyNetworkInterface1
{
public static void main(String[] args) throws Exception
{
if (args.length == 0 )
return ;
NetworkInterface ni = NetworkInterface.getByName(args[ 0 ]);
System.out.println((ni == null ) " 网络接口不存在! " : ni);
}
}
import java.net. * ;
public class MyNetworkInterface1
{
public static void main(String[] args) throws Exception
{
if (args.length == 0 )
return ;
NetworkInterface ni = NetworkInterface.getByName(args[ 0 ]);
System.out.println((ni == null ) " 网络接口不存在! " : ni);
}
}
- 测试1
执行如下命令:
java mynet.MyNetworkInterface1 eth0
运行结果:
name:eth0 (Realtek RTL8139 Family PCI Fast Ethernet NIC) index:
4
addresses:
/ 192.168.18.10 ;
/ 192.168.18.20 ;
/ 192.168.18.10 ;
/ 192.168.18.20 ;