Java 学习:JPCAP——Java 中的数据链路层控制
一.JPCAP 简介
众所周知,JAVA 语言虽然在 TCP/UDP 传输方面给予了良好的定义,但对于网络层
以下的控制,却是无能为力的。JPCAP 扩展包弥补了这一点。
JPCAP 实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP
调用 wincap/libpcap,而给 JAVA 语言提供一个公共的接口,从而实现了平台无关性。在官
方网站上声明,JPCAP 支持 FreeBSD
3
.x, Linux RedHat
6.1
, Fedora Core
4
, Solaris, and
Microsoft Windows
2000
/XP 等系统。
二.JPCAP 机制
JPCAP 的整个结构大体上跟 wincap/libpcap 是很相像的,例如 NetworkInterface 类对
应 wincap 的 typedef struct _ADAPTERADAPTER,getDeviceList()对应 pcap_findalldevs()等
等。 JPCAP 有
16
个类,下面就其中最重要的
4
个类做说明。
1
.NetworkInterface
该类的每一个实例代表一个网络设备,一般就是网卡。这个类只有一些数据成员,除
了继承自 java.lang.Object 的基本方法以外,没有定义其它方法。
数据成员
NetworkInterfaceAddress[]
java.lang.String
datalink_description.
数据链路层的描述。描述所在的局域网是什么网。例如,以太网(Ethernet)、无线 LAN
网(wireless LAN)、令牌环网(token ring)等等。
java.lang.String
datalink_name
该网络设备所对应数据链路层的名称。具体来说,例如 Ethernet10M、100M、1000M 等
等。
java.lang.String
description
网卡是 XXXX 牌子 XXXX 型号之类的描述。例如我的网卡描述:Realtek
RTL8169/
8110
Family Gigabit Ethernet NIC
boolean
Loopback
标志这个设备是否 loopback 设备。
byte
[]
mac_address
网卡的 MAC 地址,
6
个字节。
java.lang.String
Name
这个设备的名称。例如我的网卡名称:\Device\NPF_{3CE5FDA5-E15D-4F87-B217-
255BCB351CD5}
2
.JpcapCaptor