Tamponner les données de l'octet en C #

Mon application lit les octets à partir d'un socket TCP et les besoins de tampon, de sorte que je peux extraire des messages plus tard. En raison de la nature de TCP que je puisse obtenir partielle ou plusieurs messages dans un lire, donc après la lecture de chaque je tiens à inspecter la mémoire tampon et d'extraire autant de messages complets sont disponibles.

Donc je veux une classe qui me permet de faire ce qui suit:

  • ajouter arbitraire byte[] données
  • inspecter le contenu sans le consommer, en particulier le contrôle de la quantité de contenu et aussi la recherche de l'existence d'un certain octet ou d'octets
  • extraire et de consommer une partie des données comme un byte[], tout en laissant le reste là-bas pour un avenir lire

J'espère que ce que je veux peut être fait avec 1 ou plusieurs classes existantes dans le .NET de la bibliothèque, mais je ne suis pas sûr. Système.IO.MemoryStream y regarde de plus près à ce que je veux, mais (a) il n'est pas clair de savoir si c'est adapté à être utilisé comme un tampon (la lecture des données retirés à partir de la capacité?) et (b) les lectures et les écritures semblent arriver à la même place - "La position actuelle d'un flux de données est la position à laquelle la prochaine opération de lecture ou écriture pourrait avoir lieu". - ce qui n'est pas ce que je veux. J'ai besoin d'être écrit à la fin et de la lecture à partir de l'avant.

source d'informationauteur Kylotan