【发布时间】:2012-05-08 07:35:35
【问题描述】:
我想在单台 PC 上模拟网络类型的流。
我通过创建一个Stream 来实现这一点,该Stream 接收两个底层流,一个用于读取,另一个用于写入。
然后我创建这个类的 2 个实例来交换 2 个流。目前我使用MemoryStreams 作为两个底层流。
我现在遇到的问题是,如果我将 X 字节写入 MemoryStream,那么它的位置将是 X,如果我再执行 Read,我将没有数据,因为我在流的末尾.
鉴于我通常会进行几次读取/写入(因此不能在每次写入后将位置重置为 0)我可以使用什么 Stream 来获得这种行为?
实际上我想要一种字节队列,我可以以流的形式写入和读取。
即(忽略实际的方法参数)
MyStream.Write({ 1, 2, 3, 4, 5, 6 });
MyStream.Write({ 7, 8 });
MyStream.Read(3) // Returns { 1, 2, 3 }
MyStream.Read(4) // Returns { 4, 5, 6, 7 }
【问题讨论】: