![](/img/trans.png)
[英]How to identify whether a received packet is using TCP or UDP, in java using jpcap?
[英]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.