在.NET中实现良好的zlib?

Mat*_*ley 7 .net c# zlib

我正在构建一个网络应用程序,需要能够从正常的网络流量切换到zlib压缩流,即中流.我对这个问题的看法涉及布尔开关,当打开时会导致网络代码通过我可以IEnumerable<byte>输入的类传递所有数据,然后拉出解压缩的流,将其传递给现有的协议解析代码.

我看过的事情:

  • ZLib.NET - 看起来有点...... Ecclectic,并不是我想要的.尽管如此,仍然会有一个良好的开端.(Jon Skeet的评论在这里也很难激励我.)
  • SharpZipLib - 这似乎根本不支持zlib?任何人都可以确认或否认这个吗?

我非常喜欢和所有托管的解决方案,但是让我们拥有它......在.NET中是否存在这个库的任何其他实现,可能更适合我想要做的事情,或者我应该采用ZLib. NET并建立起来作为一个开始?

PS:

乔恩要求更多细节,所以在这里.

我正在尝试实施MCCP 2.这涉及在网络流中发送的信号,并且该信号之后的所有内容都是zlib压缩数据流.在上面的链接中,它们与它们的含义完全相同.无论如何,要清楚,我正在接收这个(客户端,而不是服务器),我已经从网络流中读出了一堆数据,并且切换将在此中间(在所有至少可能),所以任何解决方案都需要能够在接管NetworkStream之前将一些额外的数据输入其中(或者我手动输入其余的数据).

Jon*_*eet 6

SharpZipLib 确实支持 ZLib。查看常见问题解答

此外,您是否检查过 System.IO.Compression 命名空间是否支持您所需要的?

但我不会使用IEnumerable<byte>- 流被设计为链接在一起。

编辑:好的...听起来您需要一个支持缓冲的流,但比BufferedStream提供的控制更多。如果您看到解压缩切换,则需要“倒回”流,然后在其顶部创建一个 GZipStream。您的缓冲区至少需要与对 Read() 的最大调用一样大,以便您始终有足够的缓冲区来倒带。


Dir*_*mar 0

我可以向您推荐 Gerry Shaw 的 .NET zlib 包装器:

http://www.organicbit.com/zip/