jpcap.packet.Packet无法强制转换为jpcap.packet.TCPPacket

时间:2012-07-26 09:45:24

标签: java networking jpcap

        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 为什么?请帮助解决它。谢谢

2 个答案:

答案 0 :(得分:1)

您的代码没有任何意义。您不可能知道接收到的下两个数据包将是TCP数据包,后跟UDP数据包。显然,您收到的数据包不是TCP数据包,而是基于希望而不是经验将其转换为TCPPacket。在开始进行类型转换之前,你必须先查看数据包,看看是什么。

答案 1 :(得分:0)

如果(我怀疑)你正在尝试处理一个数据包并将其转换为各种类型,你应该阅读它一次然后再投射它。

从我理解的文档中,连续调用将读取连续的包: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/jpcap/JpcapCaptor.html#getPacket%28%29