获取网络接口设备[网卡设备]
想要捕捉网络数据包,首先要得到你电脑了的网络接口设备,也就是所谓的网卡设备.Jpcap包向我们提供了这一个类方法[静态方法]:JpcapCaptor.getDeviceList( ) ,从字面见就知道返回的是网络接口设备的列表,NetworkInterface类,网络接口类。其封装了相应网络设口信息,比如:网卡名,网卡描述,网卡所处的数据链路层的名称,描述等等。
简单的应用代码如下:
/**
* @(#)GetDevices.java
* 显示网络接口设备信息的Demo
* @author> //循环输出全部网卡设备对象相应的信息
for (int> { //设备号 ,网卡名,网卡描述
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下有图形代码的影响就得不到了。
转自 http://blog.csdn.net/scholar_ii/article/details/1941600 谢谢原博主