解决方案 »

  1.   

    参考 zlib 函数,使用 uncompress (char  *dest, int  *destLen,  char  *source,  int  sourceLen) 就可以在内存中对原始报文信息 source 进行解压缩处理。   不知道这是不是你想要的
      

  2.   

    package m4;
     
    import java.io.BufferedWriter;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.zip.GZIPInputStream;import jpcap.packet.*;
    import jpcap.*;class Tcpdump implements PacketReceiver {
    public void receivePacket(Packet packet) {
    BufferedWriter pw=null;// new BufferedWriter();
    File fin = new File("test.txt");
    try {
    pw = new BufferedWriter(new FileWriter(fin,true));
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }

      byte[] buffer1 =   null;

    if(packet instanceof TCPPacket){
    TCPPacket tcpPacket = (TCPPacket)packet;
     // if(tcpPacket.dst_port==80){
    buffer1 = tcpPacket.data;
     
    }
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         ByteArrayInputStream in = new ByteArrayInputStream(buffer1);
           
      try {
    GZIPInputStream gunzip = new GZIPInputStream(in);
     byte[] buffer = new byte[256];
        int n;
        while ((n = gunzip.read(buffer)) >= 0) {
          out.write(buffer, 0, n);
        }
        System.out.println(out.toString());
    } catch (IOException e) {
    // TODO 自动生成的 catch 块
    e.printStackTrace();
    }
     
     
     
      

      


    }
    }public class PacketCapture {
    public static void main(String[] args) throws Exception{
    NetworkInterface[] devices = JpcapCaptor.getDeviceList();
    NetworkInterface device = devices[0];
    JpcapCaptor jpcap = JpcapCaptor.openDevice(device, 2000, false, 20);
    jpcap.setFilter("tcp", true);
    jpcap.loopPacket(-1, new Tcpdump());

    }

    }
    异常啊  为什么   有没有人帮我啊