Я хочу эмулировать сетевой поток типа -на одном ПК.
Я сделал это, создав Stream
, который принимает 2 основных потока: один для чтения, а другой для записи.
Затем я создаю 2 экземпляра этого класса, меняя местами 2 потока. В настоящее время я использую MemoryStream
в качестве двух базовых потоков.
Проблема, с которой я столкнулся сейчас, заключается в том, что если я запишу 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 }