今天用到NetworkInterface,找了下,然后转篇好文章~
源地址:http://hi.baidu.com/huoyuanjun/blog/item/248cc8ecdfc076e2ce1b3ed1
1. java.net.NetworkInterface类的使用
1.1. 简介
java.net.NetworkInterface是从jdk1.4开始加入进来的,这个类提供了对本机物理网络接口的访问。一开始这个类提供的方法不多,在jdk1.6又加入了许多实用的辅助方法。
1.2. 获取java.net.NetworkInterface实例
NetworkInterface同样没有提供公开的构造函数,而是提供一些静态方法来获取实例,主要有以下的方法:
static NetworkInterface getByInetAddress(InetAddress addr)搜索绑定了制定IP地址的网络接口
static NetworkInterface getByName(String name)搜索具有指定名称的网络接口
static Enumeration<NetworkInterface> getNetworkInterfaces()返回本机所有网络接口的一个枚举实例
下面的一个简单的例子,展示了如何使用NetworkInterface类来获取本地所有的网络接口。
package org.dakiler.javanet.chapter1;
import java.net.NetworkInterface;
import java.util.Enumeration;
public class Example5
{
public static void main(String args[])throws Exception
{
Enumeration<NetworkInterface> e=NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
NetworkInterface ni=e.nextElement();
System.out.print(ni.toString());
System.out.println("-----");
}
}
}
在这个例子中,使用到了getNetworkInterfaces()方法获取所有网络接口,返回的类型是一个Enumeration,类似于Iterator的一个对象。然后通过循环打印出所有的结果,如下:
name:lo (MS TCP Loopback interface) index: 1 addresses:
/127.0.0.1;
-----
name:eth0 (Realtek RTL8169/8110 Family Gigabit Ethernet NIC - ????¨¹??????¨°?) index: 2 addresses:
/192.168.1.102;
-----