当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>JAVA网络编程

Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息

    从JDK1.4开始,Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。

    相关技术专题:Java网络编程-基础到进阶教程

    一、创建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);
    }
}

    测试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 ;

    测试2

    执行如下命令:

java mynet.MyNetworkInterface1 abcd

    运行结果:

网络接口不存在!

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接