1. Jpcap 下载地址 链接地址不可用,问度娘JpcapSetup-0.7.exe,然后下载
2. WinPcap 下载地址 http://www.winpcap.org/install/default.htm
3. Libpcap 下载地址 http://www.tcpdump.org/
4. Jpcap API 参考网址 http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/index.html
Windows 环境安装配置:
1. 运行 JpcapSetup-0.7.exe (目前最新版本) ,一步步next, 注意最后有个提示,告诉你Jpcap.dll 和 jpcap.jar 的安装位置,一般情况下,Jpcap.dll 安装在 C:\Windows\System32 目录下, jpcap.jar 安装在 C:\Windows\Sun\Java\lib\ext 目录下。
2. 将Jpcap.dll 复制到 jre 路径下的 bin 文件夹下, 将 jpcap.jar 复制到 jre路径下的 lib\ext 文件夹下。
Linux 环境下安装配置:
1. 安装jdk(jdk1.6或者更高版本)。
$(CC) $(COMPILE_OPTION) -I$(JNI_INCLUDE) 这一行修改为
$(CC) $(COMPILE_OPTION) -fPIC -I$(JNI_INCLUDE)并保存
然后在src/c目录中输入命令 make –回车,这时会在src/c目录生成libjpcap.so文件,最后把生成的libjpcap.so和jpcap解压目录/lib下的jpcap.jar,复制到你java目录/jre/lib/ext。
下载地址: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html
注:如果libjpcap.so文件没有生成请检查是否有2中说的软件包没有安装。
代码测试:
从网上Copy了一段代码:
import jpcap.JpcapCaptor; import jpcap.NetworkInterface; public class DispalyNetInterface { public static void main(String args[]) { try { // 获取本机上的网络接口对象数组 final NetworkInterface[] devices = JpcapCaptor.getDeviceList(); for (int i = 0; i < devices.length; i++) { NetworkInterface nc = devices[i]; // 一块卡上可能有多个地址: String address = ""; for (int t = 0; t < nc.addresses.length; t++) { address += "|addresses[" + t + "]: " + nc.addresses[t].address.toString(); } // 打印说明: System.out.println("第" + i + "个接口:" + "|name: " + nc.name + "|loopback: " + nc.loopback + "\r\naddress: " + address); } } catch (Exception ef) { ef.printStackTrace(); System.out.println("显示网络接口数据失败: " + ef); } } }
刚开始运行是出现以后错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: jpcap.JpcapCaptor.getDeviceList()[Ljpcap/NetworkInterface;
at jpcap.JpcapCaptor.getDeviceList(Native Method)
at org.manlin.jpcap.DispalyNetInterface.main(DispalyNetInterface.java:11)
最后一翻折腾后,发现是自己最初jre路径下的bin下的jpcap.dll 是从 http://sourceforge.net/projects/jpcap/ 上下载的 jpcap-0.01.16-win32.zip 解压下文件中copy过去的,然后我用 C:\Windows\System32 下的 Jpcap.dll 替换掉,问题就解决了。(希望对出现同样问题的朋友做个参考)
运行成功后输出结果:
第0个接口:|name: \Device\NPF_{981723CD-87E4-4364-8C4A-467A51880877}|loopback: false
address: |addresses[0]: /fe80:0:0:0:3c5c:7e90:9c7:5376|addresses[1]: /192.168.100.18
文中参考代码出处:http://javafound.iteye.com/blog/165704