c# - 将两个单向流合并为一个双向流

标签 c# sockets compression

特别是我使用 Ionic.Zlib.ZlibStreamSystem.Net.Sockets.NetworkStream 上进行 Zlib 压缩。

问题是,ZlibStream 是一种单向流;您可以使用 Read()Write() 但不能同时使用这两种方法。您需要两个单独的流,一个用于发送,一个用于接收(一个压缩,另一个解压缩)。在您需要将它传递给需要单个双向流(Read()Write() 功能)的函数之前,它工作正常。例如,new System.Net.Security.SslStream(Stream base)

我意识到我可以编写一个 Stream 类,它接受一个写入流和一个读取流,并在覆盖中调用正确的流。但我希望这已经存在于某个地方的框架中,或者已经有可用的实现。

最佳答案

我很确定没有任何类(class)可以为您做这件事。但是,您需要编写的包装器类很简单,根本不会花费您很长时间。

您可能会从 Stream 继承,但如果您分析您的需求和其他可用的流类型,您可能会发现从更具体的类继承会对您有所帮助。

编辑:根据 Lucas B 的评论。

请记住,Stream 对象的正常使用要求它们实际继承自 Stream。否则,您不能将它作为参数传递给大量需要流的函数。

关于c# - 将两个单向流合并为一个双向流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388657/

相关文章:

c++ - C/C++ 的压缩库能够处理数组中超过 32 位的元素

c# - 流式音频中的降噪和压缩

C# 在桌面上定位窗口

c# - 在使用 c# 绑定(bind)到 .net 中的 gridview 之前从类数组中过滤数据

c# - 文本前面的 Visual Studio 修饰会干扰选择

c - 如果服务器关闭,则阻止 recv 调用挂起

c - C中的linux套接字和多线程

c# - 从 C# 匿名对象获取属性

无法分配请求的地址 - 可能的原因?

jquery - Paho javascript mqtt 压缩有效负载