知识大全 使用NetworkInterface类获得网络接口信息
Posted 知
篇首语:行是知之始,知是行之成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用NetworkInterface类获得网络接口信息相关的知识,希望对你有一定的参考价值。
Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
从JDK 开始 Java提供了一个NeorkInterface类 这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息
相关技术专题 Java网络编程 基础到进阶教程
一 创建NeorkInterface对象的两个静态方法
NeorkInerface类和InetAddress一样 也没有public的构造方法 因此 必须通过它的两个静态方法来创建NeorkInterface对象 可以使用两种方法来创建NeorkInterface对象 网络接口名(getByName方法)和IP地址(getByInetAddress方法)
getByName方法
这个方法可以通过网络接口名来创建NeorkInterface对象 这个网络接口名并不是计算机名 而是用于标识物理或逻辑网络接口的名字 一般是由操作系统设置的 网络接口名在大多数操作系统上(包括Windows Linux和Unix)是以eth开头 后面是网络接口的索引号 从 开始 如本机安了三块网卡 那么网络接口名就依次是eth eth 和eth NeorkInterface对象的toString方法可以返回网络接口的名称 显示名和这个网络接口上绑字的所有IP地址等信息 当网络接口名不存在时 getByName返回null getByName方法定义如下
public static NeorkInterface getByName(String name) throws SocketException
下面的代码是一个显示指定网络接口信息的程序 网络接口名通过命令行参数传入
package mynet;import *;public class MyNeorkInterface public static void main(String[] args) throws Exception if (args length == ) return; NeorkInterface ni = NeorkInterface getByName(args[ ]); System out println((ni == null) ? 网络接口不存在! : ni);
测试
执行如下命令
java mynet MyNeorkInterface eth
运行结果
name:eth (Realtek RTL Family PCI Fast Ethernet NIC) index: addresses:/ ;/ ;
测试
执行如下命令
java mynet MyNeorkInterface abcd
运行结果
网络接口不存在!
getByInetAddress方法
除了可以使用网络接口名来得到网络接口的信息 还可以利用getByInetAddress方法来确定一个IP地址属于哪一个网络接口 由于getByInetAddress方法必须使用一个InetAddress对象封装的IP地址来作为参数 因此 在使用getByInetAddress方法之前 必须先创建一个InetAddress对象 但要注意不能使用远程的IP的域名来创建InetAddress对象 否则getByInetAddress将返回null getByInetAddress方法的定义如下
public static NeorkInterface getByInetAddress(InetAddress addr) throws SocketException
下面代码可以确定一个IP地址属于哪一个网络接口 这个IP地址通过命令行参数传入
package mynet;import *;public class MyNeorkInterface public static void main(String[] args) throws Exception if(args length == ) return; InetAddress local = InetAddress getByName(args[ ]); NeorkInterface ni = NeorkInterface getByInetAddress(local); System out println((ni == null) ? 本机不存在此IP地址! : ni);
测试
执行如下命令
java mynet MyNeorkInterface
运行结果
name:lo (MS TCP Loopback interface) index: addresses:/ ;/ : : : : : : : ;
测试
执行如下命令
java mynet MyNeorkInterface
运行结果
name:ppp (WAN (PPP/SLIP) Interface) index: addresses:/ ;
测试 使用的IP地址 是ADSL连接临时分配给本机的IP地址 因此 运行结果返回的ppp 是ADSL网络接口
二 得到本机所有的网络接口
NeorkInterface可以通过getNeorkInterfaces方法来枚举本机所有的网络接口 我们也可以利用getNeorkInterfaces得到的网络接口来枚举本机的所有IP地址 当然 也可以通过InetAddress类的getAllByName来得到本机的所有IP地址 但getNeorkInterfaces方法可以按网络接口将这些IP地址进行分组 这对于只想得到某个网络接口上的所有IP地址是非常有用的 getNeorkInterfaces方法的定义如下
public static Enumeration<NeorkInterface> getNeorkInterfaces() throws SocketException
下面代码演示了如何使用getNeorkInterfaces方法得到本机所有的网络接口
package mynet;import *;import java util *;public class MyNeorkInterface public static void main(String[] args) throws Exception Enumeration<NeorkInterface> nis = NeorkInterface getNeorkInterfaces(); while (nis hasMoreElements()) System out println(nis nextElement());
运行结果(部分)
name:lo (MS TCP Loopback interface) index: addresses:/ ;/ : : : : : : : ;name:eth (Realtek RTL Family PCI Fast Ethernet NIC ) index: addresses:/ ;/ ;name:ppp (WAN (PPP/SLIP) Interface) index: addresses:/ ;
上面的运行结果只是一种可能的结果 读者在运行上面的程序时根据本机的硬件和软件的配置不同 运行结果可能会有所不同
三 NeorkInterface类的Getter方法
NeorkInterface类提供了三个方法可以分别得到网络接口名(getName方法) 网络接口别名(getDisplayName方法)以及和网络接口绑定的所有IP地址(getInetAddresses方法)
getName方法
这个方法用来得到一个网络接口的名称 这个名称就是使用getByName方法创建NeorkInterface对象时使用的网络接口名 如eth ppp 等 getName方法的定义如下
public String getName()
getDisplayName方法
这个方法可以得到更容易理解的网络接口名 也可以将这个网络接口名称为网络接口别名 在一些操作系统中(如Unix) getDisplayName方法和getName方法的返回值相同 但在Windows中getDisplayName方法一般会返回一个更为友好的名字 如Realtek RTL Family PCI Fast Ethernet NIC getDisplayName方法的定义如下
public String getDisplayName()
getInetAddresses方法
NeorkInterface类可以通过getInetAddresse方法以InetAddress对象的形式返回和网络接口绑定的所有IP地址 getInetAddresses方法的定义如下
public Enumeration<InetAddress> getInetAddresses()
上面的代码演示了如果使用上述三个Getter方法
package mynet;import *;import java util *;public class MyNeorkInterface public static void main(String[] args) throws Exception if (args length == ) return; NeorkInterface ni = NeorkInterface getByName(args[ ]); System out println( Name: + ni getName()); System out println( DisplayName: + ni getDisplayName()); Enumeration<InetAddress> addresses = ni getInetAddresses(); while (addresses hasMoreElements()) System out println(addresses nextElement() getHostAddress());
测试
执行如下命令
java mynet MyNeorkInterface eth
运行结果
cha138/Article/program/Java/hx/201311/27178相关参考
知识大全 我是网络工程专业 专科,准备2011年专接本,请教各位前辈,都有哪些要考,都能接什么专业呢
我是网络工程专业专科,准备2011年专接本,请教各位前辈,都有哪些要考,都能接什么专业呢?谢谢啦!这首先要看你是哪个省哪个学校的了,我是重庆的,我学的软件,也报了小自考,只能报西南大学的计算机网络,英
乙与丙因某事发生口角,甲知此事后,找到乙,谎称自己受丙所托带口信给乙,如果乙不拿出2000元给丙,丙将派人来打乙。乙害怕
乙与丙因某事发生口角,甲知此事后,找到乙,谎称自己受丙所托带口信给乙,如果乙不拿出2000元给丙,丙将派人来打乙。乙害怕被打,就托甲将2000元带给丙。甲将钱占为已有。对甲的行为应当如何处理?A、按诈
知识大全 手机可以时候GPRS网络,但不能接打电话和收发短信,卡放到其它手机可以正常使用,哪里出的问题
手机可以时候GPRS网络,但不能接打电话和收发短信,卡放到其它手机可以正常使用,哪里出的问题? 以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理
通常一台计算机要接人互联网,应安装的设备是_____。A、调制解调器或网卡B、网络操作系统C、网络查询工具D、浏览器答案:A解析:一台电脑接入互联网,首先应该安装硬件设备。选项中的网路操作系统、网络查
一个光猫两个路由器怎么设置无线网络如果是需要拨号的光猫,那就只能光猫接路由器,路由器再接路由器。路由器接无线路由器,第二个路由器设置,有两种方法(前提是第一个路由器已经设置好):第一种方法:动态IP方
__是指公司借助网络面向普通投资者出让一定比例的股份,投资者通过出资入股公司,获得未来收益
_____是指公司借助网络面向普通投资者出让一定比例的股份,投资者通过出资入股公司,获得未来收益。A、私募股权B、股权融资C、P2PD、股权众筹答案:D解析:公司出让一定比例的股份,面向普通投资者,投
专接本报什么专业好呢(女生)要看你的爱好.和就业两个方面.还有就是你现在学什么专业的.女生二本报什么专业好?,女生考二本报考什么专业好1、二本考生,尤其是二本文科女生,建议报考财会类、管理类以及师范类
虚构险情类通讯网络诈骗,常见的类型包括()。A、虚构车祸B、虚构绑架C、虚构手术D、虚构包裹藏毒正确答案:ABCD
虚构险情类通讯网络诈骗,常见的类型包括()。A、虚构车祸B、虚构绑架C、虚构手术D、虚构包裹藏毒正确答案:ABCD
ASP.NET设计网络硬盘之两个重要类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 要进行网络