Non, vous devez lire toutes les données dans un NetworkStream
. Si vous avez besoin d'ignorer des données, vous pouvez les lire et les ignorer, mais vous devez les lire avant de les faire avancer. C'est parce que NetworkStream
est l'abstraction d'un flux de données de socket TCP - et il n'y a rien dans TCP qui dit d'ignorer les octets - c'est juste un firehose de données binaires venant à vous. Les protocoles au-dessus de TCP, tels que FTP ou HTTP, peuvent implémenter des concepts qui vous permettraient de positionner dans un fichier ou un objet, mais NetworkStream
n'est pas au courant de tout cela - il vous laisse juste obtenir les données de socket comme elles viennent.
Si vous avez besoin d'un flux d'abstraire les fonctions Seeking de sorte que vous pouvez passer à un code qui nécessite un flux adressable, vous pouvez construire votre propre classe Stream
qui enveloppe NetworkStream
qui implémente Seek
et ou Position
. Bien sûr, sous la table, il faudrait lire et ignorer les sections que vous avez utilisées Seek
ou Position
pour contourner; et si vous ne le mettez pas en mémoire tampon, vous ne pourrez pas appliquer Seek
ou Position
en arrière.
Vous avez raison, à moins que le protocole et le point de terminaison ne le supportent d'une manière ou d'une autre, la seule façon de le déplacer est de lire et de vider. – Lloyd