2017-09-02 16 views
0

着信NetworkStreamから何バイトものデータをスキップ/ダンプする方法はありますか? SeekPositionはできませんので、他のストリームにコピーしたり、それを読んだり、後でダンプしたりすることしかできないようです。着信NetworkStreamからデータをダンプしますか?

現在ストリームを読み取る方法はReadAsync()です。

+0

プロトコルとエンドポイントが何らかの形でそれをサポートしていない限り、それを移動する唯一の方法は読み取りとダンプです。 – Lloyd

答えて

2

いいえ、すべてのデータをNetworkStreamに読み込む必要があります。データをスキップする必要がある場合は、それを読んで無視することができますが、前に進む前にそれを読む必要があります。これは、NetworkStreamがTCPソケットストリームのデータを抽象化しているためです。また、TCPにはバイトをスキップするものは何もありません。これは、バイナリデータのFirehoseだけです。 FTPやHTTPのようなTCP上のプロトコルは、ファイルやオブジェクト内での位置付けを可能にするコンセプトを実装するかもしれませんが、NetworkStreamはすべてを意識していません。

あなたがシーク可能なストリームを要求するいくつかのコードに渡すことができますので、あなたがSeekおよびまたはPositionを実装NetworkStreamをラップ独自のStreamクラスを構築することができ抽象シーク機能にストリームの必要がある場合。もちろん、表の下では、バイパスにSeekまたはPositionを使用したセクションを読んで無視する必要があります。バッファリングしない限り、SeekまたはPositionを後方に実装することはできません。

関連する問題