前言
關於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理論應該是可以的。