啥是JNetPcap?
JNetPcap是由Sly Technologies开发的开源DPI(Deep Packet Inspection)SDK。
Java平台底层不支持底层网络操作,需要通过JNI封装不同系统提供的C库提供Java访问方法。JnetPcap主要有下面四个特点:
- 提供几乎所有libpcap类的封装
- 实时解码抓取到的数据包
- 提供多种类的网络协议解析库
- 通过使用SDK用户可以轻松的扩展网络协议
- 通过native和Java实现,来优化解码过程
JnetPcap安装
JnetPcap的安装其实也比较简单,也就是3步走的政策。关键有时候会搞不清楚,容易拉掉某些步骤。因此,我将这些步骤整理如下:
- 安装依赖
在第一部分对JNetPcap的介绍中已经提过了,JNetPcap几乎提供libpcap的所有封装,所以他肯定要依赖于libpcap的啦,通过一下命令在你的机器上安装libpcap。
yum install -y libpcap libpcap-devel
- 引入jar包
引入jar包就是直接将jar包引入到你的项目中就可以了。
- 设定library
个人感觉这一步还是比较坑爹的,因为当你运行一个普通的java程序和运行一个hadoop MapReduce程序时,library的文件目录可能会有所不同。
你可以通过以下方法,查看当前java程序的library目录地址。
public class Main {
public static void main() {
// 输出当前程序的library目的地址
System.out.println(System.getProperty("java.library.path"));
}
}
然后将jnetpcap.so复制到上面输出的library目录中即可。
JNetPcap的相关demo
参见GitHub。