首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有GZipStream的C# SslStream

带有GZipStream的C# SslStream
EN

Stack Overflow用户
提问于 2010-09-17 20:55:33
回答 2查看 1K关注 0票数 0

可以使用GZipStream在C#中传递SslStream吗?也就是说,你能做到

代码语言:javascript
复制
GZipStream stream = new GZipStream(sslStream, CompressionMode.Compress);
stream.Write(...);

...

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

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-17 21:12:35

我想没有什么不可以的;SSL流将只被赋予字节,但这是它所期望的。重要的是要正确关闭GZipStream,因为即使是Flush()也不总是真正刷新(因为必须为压缩保留一个正在运行的缓冲区)。所以:

代码语言:javascript
复制
using(GZipStream stream = new GZipStream(sslStream, CompressionMode.Compress)) {
    stream.Write(...);
    stream.Close(); // arguably overkill; the Dispose() from "using" should be enough
}

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

票数 1
EN

Stack Overflow用户

发布于 2010-09-17 22:00:13

这是可能的,有时可能会起作用,但有时也可能失败。如果您的协议总是允许您在SSLStream关闭之前“干净利落地关闭”GZipStream,那么它应该可以工作。所谓“干净利落地关闭”,我的意思是GZipStream关闭效果(压缩缓冲区的刷新)可以发生,并传播到对等体。它可能会失败,因为Ssl允许相当激烈的闭包语义。请参阅RFC 2246的7.2.1节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3735463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档