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#) を使用したほうがよいと思いますか? パケットをキャプチャしてファイルに書き込みたいだけなので、これが最もうまく機能する言語を使用します。よろしくお願いします。