Мое приложение читает байты из TCP-сокета и должно их буферизовать, чтобы я мог извлекать из них сообщения позже. Из-за природы TCP я могу получить частичное или несколько сообщений за одно чтение, поэтому после каждого чтения я хотел бы проверить буфер и извлечь столько полных сообщений, сколько доступно.
Поэтому мне нужен класс, который позволяет мне выполните следующие действия:
Я ожидаю, что то, что я хочу, может быть сделано с одним или несколькими существующими классами в библиотеке .NET, но я не уверен который. System.IO.MemoryStream выглядит близко к тому, что я хочу, но (а) неясно, подходит ли он для использования в качестве буфера (удаляются ли прочитанные данные из емкости?) И ( б) кажется, что чтение и запись происходят в одном и том же месте - «Текущая позиция потока - это позиция, в которой может произойти следующая операция чтения или записи» - чего я не хочу. Мне нужно писать до конца и читать спереди.