0

我使用以下代码从存储在 pcap 文件中的数据包中读取源 IP 和目标 IP 。public void nextPacket(PcapPacket packet, String user) {

        Ip4 ip = new Ip4();
                    Ethernet eth=new Ethernet();
                    String sIP;
                    String dIP;
                    int totalLength=0;
                    if (packet.hasHeader(ip) == false){
                        return;
                    }
                     totalLength = totalLength+ ip.getPayloadLength();
                     sIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.source());
                     dIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.destination());
                     System.out.println("SIP = "+sIP+"  "+"destIP = "+dIP+" "+"Payload Length = "+ip.getPayloadLength());
                     System.out.println("Total Length = "+totalLength);
            }   

但它什么也没显示,有带有标头的数据包。请帮我。

4

2 回答 2

2
PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {

        final Ip4 ip = new Ip4();
        public void nextPacket(PcapPacket packet, String user) {

            if(packet.hasHeader(Ip4.ID)){
                packet.getHeader(ip);
                byte[] dIP = new byte[4], sIP = new byte[4];
                dIP = packet.getHeader(ip).destination();
                sIP = packet.getHeader(ip).source();
                String sourceIP = FormatUtils.ip(sIP);
                String destinationIP = FormatUtils.ip(dIP);

                System.out.printf("tcp.ip_src=%s%n",sourceIP);
                System.out.printf("tcp.ip_dest=%s%n",destinationIP);
            }

        }
    };
于 2014-06-03T05:14:14.403 回答
0

你是什​​么意思它什么都没有显示?它只是因为数据包没有标头而返回,还是在您最后的代码中打印空值?我不得不用这个小信息猜测数据包没有ip头。

于 2013-08-22T09:50:50.590 回答