JNetPcap有一些問題。eclipse中的JNetPcap不會打印錯誤... Ubuntu 12.04
我使用Ubuntu 12.04,並試圖製作基於java語言的數據包snipper。
我所做的是以下。
我已經下載了JNetPcap 1.3.0。
並且正如教程所說的構建了一個java項目。 http://jnetpcap.com/examples/dumper < - 這是鏈接。
我輸入就像那個鏈接,我得到了我的第一個問題。 PcapHandler類已被棄用。所以我找到了文檔,並用ByteBufferHandler替換它。
現在我編譯這個項目,並得到一個unsatifiedLinked錯誤。 我已經嘗試用靜態塊來加載該庫。 經過一番嘗試,我將「libjnetpcap.so」複製到/ usr/lib/
現在我刪除了不滿意的鏈接錯誤。但不知何故它停止在第一次錯誤檢查。 它打印「第一個錯誤檢查:」,然後自動退出。
公共靜態無效的主要(字串[] args){
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(); }
}
如果有任何好的參考或絕妙的主意,請分享。
謝謝。
但是,當我打印findAllDevs的結果時,它表示成功爲0。根據回報值,它應該工作。 –
請注意,對於'pcap_findalldevs()',「working」包括「不返回任何設備」。 ''Pcap.findAllDevs()'可能是'pcap_findalldevs()'的一個簡單包裝,並且可能工作原理相同。 (如果問題在於我說的是,它可能是,你將需要''Pcap.openLive()'調用的特權,所以我***強烈建議你運行你的程序如果您想捕獲流量,請使用這些權限。) – 2013-07-02 02:23:52
Yeap。你是對的。我剛剛在官方的JNetPcap主頁上發現了你在這裏寫的東西。 http://jnetpcap.com/node/184它寫在2009年,但stil有我想這個問題。所以我實際上做的是在eclipse中以root權限運行這個程序,對吧? –