background image

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