特别是我使用 Ionic.Zlib.ZlibStream
在 System.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/