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() なしでコードを実行すると、例外が発生します。例外の前に「null」が 1 ~ 2 回発生することがあるため、プログラムをクラッシュさせるパケット (ビーコンなど) がいくつかあるようです。「udp」などのフィルターを設定すると、例外は発生しませんが、パケットがキャプチャされないため、毎回「null」になります。

私のネットワーク インターフェイスは、モニター モードで実行される Wifi アダプターであるため、受信したすべてのパケットをキャプチャします。

答えがわからない場合は、同じことができる jpcap のようなライブラリが他にあるかどうか教えていただけますか? 他に何も見つかりませんでした。それとも、これには別の言語 (C#) を使用したほうがよいと思いますか? パケットをキャプチャしてファイルに書き込みたいだけなので、これが最もうまく機能する言語を使用します。よろしくお願いします。

4

0 に答える 0