0

我正在尝试使用多播发送 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”,所以似乎有几个数据包让我的程序崩溃(例如信标)。当我设置一个过滤器时,比如“udp”,我没有例外,但每次都是“null”,因为没有捕获数据包。

我的网络接口是一个在监控模式下运行的 Wifi 适配器,因此它会捕获它接收到的所有数据包。

如果你不知道答案,你能告诉我是否有像 jpcap 这样的其他库可以做同样的事情吗?我什么也没找到。或者你会说我最好为此使用另一种语言(C#)?我真的只想捕获数据包并将它们写入文件,所以我将使用最适合的语言。我将衷心感谢您的帮助。

4

0 回答 0