Stream インスタンスをラップするクラスがあるので、それを使用して FileStream と NetworkStream をラップできます。ここで、ストリームがまだデータを配信しているかどうかをテストしたいと思います。つまり、NetworkStream がまだ接続されているかどうか、または FileStream が最後に達したかどうかをテストします。
次の Stream.Read() が例外を引き起こすかどうかを判断するために使用できる戻り値を持つ関数はありますか?
前もって感謝します。
Stream インスタンスをラップするクラスがあるので、それを使用して FileStream と NetworkStream をラップできます。ここで、ストリームがまだデータを配信しているかどうかをテストしたいと思います。つまり、NetworkStream がまだ接続されているかどうか、または FileStream が最後に達したかどうかをテストします。
次の Stream.Read() が例外を引き起こすかどうかを判断するために使用できる戻り値を持つ関数はありますか?
前もって感謝します。
Stream.Read最後に例外をスローするべきではありません。ポジティブでないものを返します。私はこれを取り戻すまでただ読む(...)-すなわち
int read;
while((read = stream.Read(buffer, 0, buffer.Length) > 0) {
// process "read"-many bytes
}
-がありますが、これはストリーム自体ではなく、バッファを参照していることに注意しNetworkStreamてください(ここで説明します)。私はこれについてのみ言及しているので、ストリームが閉じているかどうかを確認するためにそれを使用しようとしないでください。それはそれが意味することではないからです。DataAvailable
でラップするStreamと、またはを使用してクロージャをテストStreamReaderできます。PeekEndOfStream
bool isEnd = reader.EndOfStream;
また:
int b = reader.Peek();
if(b < 0) {... was end ...}
stream.CanRead
反対側がソケットを閉じると、NetworkStream は EOF を返します (Read は 0 バイトを返します)。