Jpcap包的学习笔记(三)获取网络接口设备[网卡设备]

来源:互联网 发布:淘宝哪里交水电费 编辑:程序博客网 时间:2024/05/21 10:39

 获取网络接口设备[网卡设备]

想要捕捉网络数据包,首先要得到你电脑了的网络接口设备,也就是所谓的网卡设备.Jpcap包向我们提供了这一个类方法[静态方法]:JpcapCaptor.getDeviceList( )  ,从字面见就知道返回的是网络接口设备的列表,NetworkInterface类,网络接口类。其封装了相应网络设口信息,比如:网卡名,网卡描述,网卡所处的数据链路层的名称,描述等等。

简单的应用代码如下:

 /**
 * @(#)GetDevices.java
 * 显示网络接口设备信息的Demo
 * @author scholar_ii
 * @version 1.00 2005/12/16
 */
import jpcap.*;
public class GetDevices
{
    public GetDevices()
    {
     
    }
   
    public static void ShowNeworkInterfaceDevices()
    {
     //获得网卡设备的实例列表
     NetworkInterface[] devices = JpcapCaptor.getDeviceList();
     //循环输出全部网卡设备对象相应的信息
     for (int i = 0; i < devices.length; i++)
     {   //设备号 ,网卡名,网卡描述
         System.out.println(i+": "+devices[i].name + "(" + devices[i].description+")");
         //网卡所处数据链路层的名称与其描述
         System.out.println(" datalink: "+devices[i].datalink_name + "(" + devices[i].datalink_description+")");
         //网卡MAC地址 
         System.out.print(" MAC address:");
         for (byte b : devices[i].mac_address)//JDK1.5以上版本的for语法的加强变种[循环遍历]
             //转化为十六进制的字串符表示   
          System.out.print(Integer.toHexString(b&0xff) + ":");
      System.out.println();  //print out its IP address, subnet mask and broadcast address
      //输出网卡IP地址 IPV4 IPV6 子网地址 扩播地址
      for (NetworkInterfaceAddress a : devices[i].addresses)   
        System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);}
    }
   
    public static void main(String[] args) {
        ShowNeworkInterfaceDevices();
    }
}

可能的运行结果如下(WindowsXP下):

0: /Device/NPF_GenericDialupAdapter(Adapter for generic dialup and VPN capture)
 datalink: EN10MB(Ethernet)
 MAC address:0:0:0:0:0:0:
1: /Device/NPF_{B7CE211D-CEA5-4010-9A39-B833BBEC772D}(Realtek RTL8139/810x Family Fast Ethernet NIC                                    (Microsoft's Packet Scheduler) )
 datalink: EN10MB(Ethernet)
 MAC address:0:e0:4c:87:a0:5a:
 address:/192.168.1.102 /255.255.255.0 /255.255.255.255

注意:0号网卡是一个操作系统的虚拟网卡(有时在上面代码前有图形界面代码如JFrame 之类的代码)可能0号网卡得不到,我的实验结果是这样的在2000下不管怎样都可以得到0与网卡,XP下有图形代码的影响就得不到了。

 

原创粉丝点击