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 为什么?请帮助解决它。谢谢
答案 0 :(得分:1)
您的代码没有任何意义。您不可能知道接收到的下两个数据包将是TCP数据包,后跟UDP数据包。显然,您收到的数据包不是TCP数据包,而是基于希望而不是经验将其转换为TCPPacket。在开始进行类型转换之前,你必须先查看数据包,看看是什么。
答案 1 :(得分:0)
如果(我怀疑)你正在尝试处理一个数据包并将其转换为各种类型,你应该阅读它一次然后再投射它。
从我理解的文档中,连续调用将读取连续的包: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/jpcap/JpcapCaptor.html#getPacket%28%29