JNetPcap 有一些问题。
我使用 Ubuntu 12.04,并尝试制作基于 java 语言的数据包截断器。
我所做的如下。
我已经下载了 JNetPcap 1.3.0。
正如教程所说,建立了一个java项目。 http://jnetpcap.com/examples/dumper <- 这是链接。
我就像那个链接一样输入,我遇到了第一个问题。PcapHandler 类已弃用。所以我找到了文档并用 ByteBufferHandler 替换它。
现在我编译这个项目并得到一个 unsatifiedLinked 错误。我已经尝试使用静态块来加载该库。经过一些尝试,我将“libjnetpcap.so”复制到 /usr/lib/
现在我删除了 unsatisfiedLinked 错误。但不知何故,它在第一次错误检查中停止了。它打印“第一次错误检查:”,然后自动退出。
公共静态无效主要(字符串[]参数){
List<PcapIf> alldevs = new ArrayList<PcapIf>(); StringBuilder errbuff = new StringBuilder(); int r = Pcap.findAllDevs(alldevs, errbuff); //============1st check if(r == Pcap.NOT_OK || alldevs.isEmpty()){ System.err.printf("1st error check : %s\n", errbuff.toString()); return; } PcapIf device = alldevs.get(1); //===================== END int snaplen = 64 * 1024; int flags = Pcap.MODE_PROMISCUOUS; int timeout = 10 * 1000; Pcap pcap = Pcap.openLive(device.getName(),snaplen, flags, timeout, errbuff); //============2nd check if(pcap == null){ System.err.printf("2nd error check : %s\n", errbuff.toString()); return; } //===================== END String ofile = "/home/juneyoungoh/tmp_capture_file.cap"; final PcapDumper dumper = pcap.dumpOpen(ofile); ByteBufferHandler<PcapDumper> handler = new ByteBufferHandler<PcapDumper>() { @Override public void nextPacket(PcapHeader arg0, ByteBuffer arg1, PcapDumper arg2) { dumper.dump(arg0, arg1); } }; pcap.loop(10,handler, dumper); File file = new File(ofile); System.out.printf("%s file has %d bytes in it!\n", ofile, file.length()); dumper.close(); pcap.close(); if(file.exists()){ file.delete(); }
}
如果有什么好的参考或好主意,请分享。
谢谢。