Packet packet = new Packet();
while(packet != null )
{
packet = jpcap.getPacket();
TCPPacket tcp = (TCPPacket)jpcap.getPacket();
IPPacket ipp = (IPPacket)packet;
UDPPacket udp = (UDPPacket)jpcap.getPacket();
ipp = (IPPacket)tcp;
}
TCPPacket tcp = (TCPPacket(jpcap.getPacket((;此行出现错误 jpcap.packet.Packet 无法强制转换为 jpcap.packet.TCPPacket为什么?请帮助解决它,谢谢
你的代码没有任何意义。您不可能知道您收到的接下来两个数据包将是一个 TCP 数据包,后跟一个 UDP 数据包。显然,您收到了一个不是TCP数据包的数据包,您只是基于希望而不是经验将其投射到TCPPacket。在开始类型转换之前,您必须查看数据包以了解它是什么。
如果(正如我怀疑的那样(您正在尝试处理一个数据包并将其转换为各种类型,您应该读取一次,然后投递它。
从文档中我了解到连续调用将读取连续包:http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/jpcap/JpcapCaptor.html#getPacket%28%29