前言
關于java使用jNetPcap嗅探網絡包在windows下配置使用,和一些介紹,看前面的這篇文章: java使用jNetPcap嗅探網絡包之windows下配置使用。
另外在linux下我用的也是1.4版本,如果還擔心1.4不知道問題出在哪裡的,可以往下看。
配置步驟
1. 添加jnetpcap.jar到工程依賴庫。不清楚依賴庫在哪看 java使用jNetPcap嗅探網絡包之windows下配置使用。
2. 把libjnetpcap.so 添加到java.library.path下,具體需要根據系統環境實際情況(建議直接放到/usr/lib下)。
3. 安裝libpcap庫
libpcap離線安裝比較麻煩,需要依次安裝:m4、bison、flex、libpca 。
關于libpcap的安裝網上已經有不少教程資料,我找了一個,有需要可以參考一下:Linux下libpcap的安裝,說的很清楚了
如果覺得下載下傳麻煩的話,我已經下載下傳了最新版本的這幾個包,放到百度網盤上,這是位址:
連結:https://pan.baidu.com/s/1SETEnzsh9W2XICEqaNOiOg
提取碼:b1xo
安裝完之後,就可以測試了。
在java使用jNetPcap嗅探網絡包之windows下配置使用,這裡我寫的有測試代碼,可以直接打開vim編輯之後 ,使用javac -classpath等指令編譯,java -cp 等指令執行,但是這樣的話,需要指定好依賴的jnetpcap的jar包位置。或者使用spring boot直接打個可執行jar包,把依賴打進來也可以,方法不重要。
關鍵說下配置libpcap的一些問題。
可能遇到的問題
下面是本文的重點。
動态連結庫找不到。一般也就是這個問題了。
好多時候讓人沒頭沒腦。
首先确定libjnetpcap.so的位置沒問題,你可以列印java.library.path變量值,看java使用jNetPcap嗅探網絡包之windows下配置使用說明。确定在這幾個目錄下。
如果libjnetpcap.so沒問題,那很有可能是libjnetpcap.so依賴的庫有問題,就是安裝的libpcap有問題了,但是這個錯誤提示資訊根本看不出來哪裡有問題,首先檢查下安裝libpcap的目錄有問題沒,我用的是centos做的測試,一般安裝後,庫檔案在這個目錄下: /usr/local/lib,可以檢查下或者配置下動态連結庫的目錄:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
但是這個隻是臨時的,可以修改配置檔案/etc/ld.so.conf,設定為永久的:
sudo vim /etc/ld.so.conf
如下:
加入這個目錄,然後,執行指令:
sudo ldconfig
如果還存在依賴庫的問題,那多半是libjnetpcap.so找不到哪個庫,查下是缺失哪個庫檔案,有個ldd指令可以看,如下:
如果找不到哪個庫檔案,上面的=>後面為空,比如libpcap.so找不到,上面就會顯示libpcap.so =>
總之,看見哪個沒有,想辦法補上來就行,重新安裝,改名字,建立軟連結呀什麼的,隻要能提供依賴的動态連結庫就行。
最後,是在 java使用jNetPcap嗅探網絡包之windows下配置使用裡寫的代碼裡,這個位置
這個64是捕獲封包的長度,不設定過濾器,在某些條件或作業系統上非0也會被忽略,比如之前在windows上是被忽略了,64也無所謂,在centos上測試的時候,生效了,是以有需要把這個參數的值調大,官方注釋來看,65535理論應該是可以的。