从中解压缩gzipstream

时间:2012-10-22 03:49:54

标签: c# sockets gzip compression

我做了一个简单的代理服务器。工作正常,但不是gzip解压缩:

  1. 幻数不正确。一定要。
  2. 没有错误,但gzipstream不会解压缩。
  3. 它的工作原理如下:

    private void HandleTraffic()
    {
        while ((bytesRead = realServer.Receive(buffer, 0, BODYBUFFERSIZE, SocketFlags.None)) > 0)
        {
            decompressedBuffer = new byte[BODYBUFFERSIZE];
            if (t == "gzip")
            {
    
                MemoryStream outputStream = new MemoryStream(), inputStream = new MemoryStream();
                inputStream.Write(buffer, 0, bytesRead);
                inputStream.Position = 0;
                inputStream.Flush();
                using (GZipStream gz = new GZipStream(inputStream, CompressionMode.Decompress))
                {
                    gz.CopyTo(outputStream);
                }
    
                decompressedBuffer = outputStream.ToArray();
    
                MessageBox.Show(ASCIIEncoding.ASCII.GetString(decompressedBuffer));
            }
        }
    }
    

    输入了InputStream,但是outputStream没有解压缩或者给我错误'幻数不正确'。

    在这项工作中,需要套接字。

2 个答案:

答案 0 :(得分:0)

您无需以任何方式处理代理服务器中的数据,解压缩,放气,无论如何。只需复制字节即可。您需要查看的唯一数据是客户端的第一行,即HTTP CONNECT命令。

答案 1 :(得分:0)

我自己的解决办法就是关闭Fiddler。