2016-04-04 3 views
1

私はあなたがやっていることのNetStreamからXバイトを読みたい場合と理解:あなたは量になるまでループする必要があるので、読むだけで、Xの一部を返す場合がありますので、BinaryReaderを使ってNetStreamから読み込む正しい方法は何ですか?

netStream.Read(buffer, 0, X); 

すると、すべてのケースでは十分ではありませんバイトを読んではX.に等しい

別の例は、しかし、BinaryReaderのBRでのNetStreamを包み、その後を進めた:

br.Read(buffer, 0, X); 

私の質問です:

NetStreamがBinaryReaderでラップされるようになったため、または元のNetstreamから読み取る場合と同様に、ReadがすべてのXバイトとループを返さないことを考慮する必要があります。

答えて

0

BinaryReader.Read(byte[], int, int)は、呼び出しを基本ストリームに転送するだけです。セマンティクスは同じです。ただし、このシナリオでは、特定のバイト数を読み取るヘルパーメソッドBinaryReader.ReadBytes(int)もあります。したがって、自分で読み取ったバイト数を把握する必要はありません。

+0

オクラホマBinaryReader.Read(バイト[]、INT、INT)whileループなしでは、 "間違った" であり、ヘルパーメソッドReadBytes(int)を使用して洗練されて/正しいアプローチ。たくさんのことを明確にしてくれてありがとう! – Sorv

0

私はこのように動作する:

using (NetworkStream netStream = new NetworkStream(...)) 
using (BinaryReader br = new BinaryReader(netStream)) 
{ 
    byte x; 
    do 
    { 
     try 
     { 
      x = br.ReadByte(); 
     } 
     catch (EndOfStreamException exception) 
     { 
      x = Byte.MinValue; 
     } 
    } while (x != byte.MinValue); 
} 
関連する問題