是否可以使用GZipStream在C#中传递SslStream?即你能做吗


GZipStream stream = new GZipStream(sslStream, CompressionMode.Compress);
stream.Write(...);

...

GZipStream stream = new GZipStream(sslStream, CompressionMode.Decompress);
stream.Read(...);


如果可能,SslStream在此之后是否仍处于可用状态,还是应该将其关闭?

谢谢。

最佳答案

我不知道为什么不这样做。 SSL流将仅被提供字节,但这还是它所期望的。重要的是正确关闭GZipStream,因为即使Flush()也不总是真正刷新(由于必须保留运行中的缓冲区进行压缩)。所以:

using(GZipStream stream = new GZipStream(sslStream, CompressionMode.Compress)) {
    stream.Write(...);
    stream.Close(); // arguably overkill; the Dispose() from "using" should be enough
}


我还假设您不是在读取和写入相同的SSL流(即,这是两个单独的示例,而不是一个示例),因为这听起来不太可行。

10-06 06:47