c# - .NET 中的 zlib 实现是否良好?

标签 c# .net zlib

我正在构建一个需要能够从正常网络流量切换到 zlib 的网络应用程序压缩流,中流。我对此事的想法涉及 bool 开关,当它打开时将导致网络代码通过我可以提供的类传递所有数据 IEnumerable<byte>进入,然后拉出解压缩的流,将其传递给已经存在的协议(protocol)解析代码。

我看过的东西:

  • ZLib.NET - 似乎有点...不拘一格,而不是我想要的。尽管如此,仍然会有一个不错的开始。 (Jon Skeet's comments here 也很难激发我的灵感。)
  • SharpZipLib - 这似乎根本不支持 zlib?谁能证实或否认这一点?

我非常喜欢所有托管解决方案,但让我们开始吧......这个库在 .NET 中是否有任何其他实现,可能更适合我想做的事情,或者我应该以 ZLib.NET 为起点构建它?

附言:

Jon 要求提供更多详细信息,所以在这里。

我正在尝试实现 MCCP 2 .这涉及在网络流中发送一个信号,此信号之后的所有内容都是 zlib 压缩数据流。在上面的链接中有指向它们确切含义的链接。无论如何,需要明确的是,我在这个(客户端,而不是服务器)的接收端,我已经从网络流中读取了一堆数据,切换将在这个中间(总共likelyhood atleast),所以任何解决方案都需要能够在它接管 NetworkStream 之前将一些额外的数据输入其中(或者我手动输入其余数据)。

最佳答案

SharpZipLib 确实支持 ZLib。找the FAQ .

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

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

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

关于c# - .NET 中的 zlib 实现是否良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513234/

相关文章:

zlib压缩数据时的内存分配?

hadoop - Mapreduce作业gzip压缩失败

c# - VS Designer 错误 : GenericArguments[0], 'X' on 'Y' 违反了类型参数 'Z' 的约束

c# - 如何在 wpf 中使用 RelayCommand?

c# - 类型解析在子容器中失败但在父容器中成功

.net - 如何从 App.Config 文件设置 CultureInfo.CurrentCulture?

c# - 在 Perl 中加密文件并在 C# 中解密

c# - JSON 数组反序列化——元素的顺序是否始终保留?

c# - 有没有工具可以在 Visual Studio 中选择一些代码并让它显示相应的 MSIL?

flutter - 在 Flutter 中解码 BLE 设备负载