我正在尝试使用多播发送udp数据包并使用jpcap接收它们。 多播代码工作,当我用wireshark嗅探时,我收到了我想要的所有数据包。但是我的jpcap代码不起作用,我得到了这个例外:
Exception in thread "main" java.lang.InstantiationException: jpcap.packet.DatalinkPacket
at jpcap.JpcapCaptor.getPacket(Native Method)
at Receiver.Receiver.main(Receiver.java:54)
这是我的代码:
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
int index = 0;
JpcapCaptor captor=JpcapCaptor.openDevice(devices[index], 60000, true, 20);
//captor.setFilter("udp", true);
for(int i=0;i<1000;i++){
//capture a single packet and print it out
Packet pac = captor.getPacket();
System.out.println(pac);
}
网络接口在wireshark中运行良好。 当我在没有captor.setFilter()的情况下运行代码时,我得到了异常。有时我会在异常之前得到1-2次“null”,所以似乎有几个数据包让我的程序崩溃(例如beacon)。当我设置一个过滤器,比如“udp”时,我没有异常,但每次都是“null”,因为没有捕获数据包。
我的网络接口是一个在监控模式下运行的Wifi适配器,因此可以捕获它收到的所有数据包。
如果你不知道答案,你能否告诉我是否还有其他类似jpcap的图书馆可以做同样的事情?我什么都没找到。或者你会说我最好使用另一种语言(C#)吗?我真的只想捕获数据包并将它们写入文件,因此我将使用最适合的语言。我非常感谢你的帮助。