【问题标题】:TCP HTTP Gzip String Decompression C#TCP HTTP Gzip 字符串解压 C#
【发布时间】:2017-10-10 21:36:16
【问题描述】:

我正在做一个关于数据包监听的项目。我遇到了 gzip 解压缩的问题。有代码:

private static string gzipDecompress(TcpDatagram tcp)
    {
        if (tcp.Http.Header != null)
        {
            MemoryStream ms = tcp.Http.ToMemoryStream();                
            byte[] bytearray = new byte[tcp.Http.Length];                
            ms.Read(bytearray, 0, 4);
            if (BitConverter.ToUInt16(bytearray, 0) == 0x8b1f)
            {
                ms.Seek(0, SeekOrigin.Begin);
                GZipStream zip = new GZipStream(ms, CompressionMode.Decompress);
                zip.Read(bytearray, 0, bytearray.Length);
                StringBuilder sB = new StringBuilder(bytearray.Length);
                for (int r = 0; r < bytearray.Length; r++)
                    sB.Append((Char)bytearray[r]);
                zip.Close(); ms.Close(); zip.Dispose(); ms.Dispose();
                return sB.ToString();
            }
            else
                return "";
        }
        else
            return "";
    }

它给出了一个幻数异常,我该如何解决,还是我的方法不对?

【问题讨论】:

    标签: c# http tcp gzipstream pcap.net


    【解决方案1】:

    如果您要解析 HTTP 响应中的第一个 HTTP 数据包,您应该使用 HttpDatagram.Body 来获取该数据包中的 HTTP 正文。

    如果您尝试解析其他数据包,您可能应该先进行 TCP 重建,然后再尝试解析 HTTP 正文。

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多