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