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

4

2 回答 2

1

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

于 2012-07-26T12:43:13.600 回答
0

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

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

于 2012-07-26T09:54:27.520 回答