快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
试1

执行如下命令:

java mynet.MyNetworkInterface2 127.0.0.1

运行结果:

name:lo (MS TCP Loopback interface) index: 1 addresses: /127.0.0.1; /0:0:0:0:0:0:0:1;

测试2

执行如下命令:

java mynet.MyNetworkInterface2 218.61.151.22

运行结果:

name:ppp0 (WAN (PPP/SLIP) Interface) index: 0 addresses: /218.61.151.22;

测试2使用的IP地址218.61.151.22是ADSL连接临时分配给本机的IP地址,因此,运行结果返回的ppp0是ADSL网络接口。

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

时间:2011-01-12

二、得到本机所有的网络接口

NetworkInterface可以通过getNetworkInterfaces方法来枚举本机所有的网络接口。我们也可以利用getNetworkInterfaces得到的网络接口来枚举本机的所有IP地址。当然,也可以通过InetAddress类的getAllByName来得到本机的所有IP地址。但getNetworkInterfaces方法可以按网络接口将这些IP地址进行分组,这对于只想得到某个网络接口上的所有IP地址是非常有用的。getNetworkInterfaces方法的定义如下:

public static Enumeration<NetworkInterface> getNetworkInterfaces() throws SocketException

下面代码演示了如何使用getNetworkInterfaces方法得到本机所有的网络接口。

package mynet; import java.net.*; import java.util.*; public class MyNetworkInterface3 {      public static void main(String[] args) throws Exception      {          Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();          while (nis.hasMoreElements())              System.out.println(nis.nextElement());      } }

运行结果(部分):

name:lo (MS TCP Loopback interface) index: 1 addresses: /127.0.0.1; /0:0:0:0:0:0:0:1; name:eth0 (Realtek RTL8139 Family PCI Fast Ethernet NIC ) index: 4 addresses: /192.168.18.10; /192.168.18.20; name:ppp0 (WAN (PPP/SLIP) Interface) index: 0 addresses: /218.61.151.22;

上面的运行结果只是一种可能的结果,读者在运行上面的程序时根据本机的硬件和软件的配置不同,运行结果可能会有所不同。

三、NetworkInterface类的Getter方法

NetworkInterface类提供了三个方法可以分别得到网络接口名(getName方法)、网络接口别名(getDisplayName方法)以及和网络接口绑定的所有IP地址(getInetAddresses方法)。

1. getName方法

这个方法用来得到一个网络接口的名称。这个名称就是使用getByName方法创建NetworkInterface对象时使用的网络接口名,如eth0、ppp0等。getName方法的定义如下:

public String getName()

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

时间:2011-01-12

2. getDisplayName方法

这个方法可以得到更容易理解的网络接口名,也可以将这个网络接口名称为网络接口别名。在一些操作系统中(如Unix),getDisplayName方法和getName方法的返回值相同,但在Windows中getDisplayName方法一般会返回一个更为友好的名字,如Realtek RTL8139 Family PCI Fast Ethernet NIC.getDisplayName方法的定义如下:

public String getDisplayName()

3. getInetAddresses方法

NetworkInterface类可以通过getInetAddresse方法以InetAddress对象的形式返回和网络接口绑定的所有IP地址。getInetAddresses方法的定义如下:

public Enumeration<InetAddress> getInetAddresses()

上面的代码演示了

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号