0

캡쳐 된 패킷을 Jpcap Library를 사용하여 Java에서 캡쳐 된 패킷을 분석하고 있습니다. 그러나 캡쳐 된 패킷은 ARPPacket입니다. 다음 프로그램에서 다음과 같은 오류가 발생합니다. 스레드에서jpcap을 사용하여 수신 된 패킷이 Java에서 IPPacket 또는 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); 
} 
} 
} 

이 어떻게 내가이 error.thank 당신을 극복했다.

답변

0

검사 조건

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; 
}