簡體   English   中英

如何使用jpcap識別Java中接收到的數據包是IPPacket還是ARPPacket?

[英]How to identify whether a received packet is IPPacket or ARPPacket in java using jpcap?

我正在捕獲IPPackets並使用Jpcap Library在Java中分析捕獲的數據包。但是捕獲的數據包是ARPPacket,我的程序顯示以下錯誤。

塊引用

線程“主”中的異常java.lang.ClassCastException:jpcap.packet.ARPPacket無法轉換為jpcap.packet.IPPacket。

塊引用

因此,如何確定接收到的數據包是IPPacket還是ARPPacket。 代碼的核心概念在這里:

import jpcap.*;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
public class Capture  {
public static void main(String[] args) throws IOException {
    NetworkInterface[] device=JpcapCaptor.getDeviceList();
Packet packet;
    JpcapCaptor captor=JpcapCaptor.openDevice(device[0], 65535, true, 20);
for(;;){
 packet=captor.getPacket();       
 IPPacket p=(IPPacket)packet;
 if(p!=null)
   System.out.println("protocol id is"+p.protocol);
}
}
}

我該如何克服這個錯誤。謝謝。

檢查條件

if(packet instanceof ARPPacket) {
    ARPPacket arp = (ARPPacket) packet;
    // do somthing with ARPPacket
} else if(packet instanceof IPPacket) {
    // do something with IP Packet
    IPPacket arp = (IPPacket) packet;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM