啥是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。