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 cannot be cast to jpcap.packet.TCPPacket が発生しました。

4

2 に答える 2

1

あなたのコードは意味がありません。受信する次の 2 つのパケットが TCP パケットの後に UDP パケットが続くことを知ることはできません。明らかに、TCP パケットではないパケットを受信し、経験よりも希望に基づいて TCPPacket にキャストしているだけです。タイプキャストを開始する前に、パケットを調べて、何が何であるかを確認する必要があります。

于 2012-07-26T12:43:13.600 に答える
0

(私が推測するように) 1 つのパケットで作業し、それをさまざまな型にキャストしようとしている場合は、一度読み取ってからキャストする必要があります。

ドキュメントから、連続した呼び出しが連続したパッケージを読み取ることを理解しています: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/jpcap/JpcapCaptor.html#getPacket%28%29

于 2012-07-26T09:54:27.520 に答える