天天看點

java使用jNetPcap嗅探網絡包在linux下配置的一些問題前言配置步驟可能遇到的問題

前言

關于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的一些問題。

可能遇到的問題

下面是本文的重點。

動态連結庫找不到。一般也就是這個問題了。

java使用jNetPcap嗅探網絡包在linux下配置的一些問題前言配置步驟可能遇到的問題

好多時候讓人沒頭沒腦。

首先确定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
           

如下:

java使用jNetPcap嗅探網絡包在linux下配置的一些問題前言配置步驟可能遇到的問題

加入這個目錄,然後,執行指令:

sudo ldconfig
           

如果還存在依賴庫的問題,那多半是libjnetpcap.so找不到哪個庫,查下是缺失哪個庫檔案,有個ldd指令可以看,如下:

java使用jNetPcap嗅探網絡包在linux下配置的一些問題前言配置步驟可能遇到的問題

如果找不到哪個庫檔案,上面的=>後面為空,比如libpcap.so找不到,上面就會顯示libpcap.so =>

總之,看見哪個沒有,想辦法補上來就行,重新安裝,改名字,建立軟連結呀什麼的,隻要能提供依賴的動态連結庫就行。

最後,是在 java使用jNetPcap嗅探網絡包之windows下配置使用裡寫的代碼裡,這個位置

java使用jNetPcap嗅探網絡包在linux下配置的一些問題前言配置步驟可能遇到的問題

 這個64是捕獲封包的長度,不設定過濾器,在某些條件或作業系統上非0也會被忽略,比如之前在windows上是被忽略了,64也無所謂,在centos上測試的時候,生效了,是以有需要把這個參數的值調大,官方注釋來看,65535理論應該是可以的。

繼續閱讀