[英]How to identify whether a received packet is IPPacket or ARPPacket in java using jpcap?
[英]How to identify whether a received packet is using TCP or UDP, in java using jpcap?
我想在TCPPacket或UDPPacket中解析我收到的数据包,但是如果我写“ TCPPacket pac3 =(TCPPacket)数据包;” 对于使用UDP作为传输层协议的数据包,我得到一个异常“线程“主”中的异常java.lang.ClassCastException:jpcap.packet.UDPPacket无法转换为jpcap.packet.TCPPacket”
如何确定收到的数据包是使用TCP还是UDP? 实际上,我想从接收到的数据包中获取端口号。
您问题的明显答案是使用instanceof
运算符:
if (packet instanceof TCPPacket) {
TCPPacket pac3 = (TCPPacket)packet;
// ...
}
但这有点臭。 我不知道JPCAP API,但请看一下是否可以进行API调用以询问数据包的类型。 或者,也许您可以设置两种不同的机制(通道,套接字,回调???)分别接收UDP和TCP,以便您知道其中的区别?
可能是您可以在Java中使用instanceof运算符来确定数据包的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.