NetworkStream.Read メソッド

定義

オーバーロード

Read(Span<Byte>)

NetworkStream からデータを読み取り、メモリ内のバイトのスパンに格納します。

Read(Byte[], Int32, Int32)

NetworkStream からデータを読み取り、バイト配列に格納します。

Read(Span<Byte>)

NetworkStream からデータを読み取り、メモリ内のバイトのスパンに格納します。

public:
 override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

パラメーター

buffer
Span<Byte>

NetworkStream から読み取られたデータを格納するメモリの領域。

戻り値

NetworkStream から読み取るバイト数。

例外

NetworkStream では読み取りがサポートされていません。

ソケットへのアクセス中にエラーが発生しました。

- または -

ネットワークからの読み取りでエラーが発生しました。

NetworkStream が閉じています。

注釈

このメソッドは、 パラメーターで使用できるデータと同じ量のデータを buffer 読み取り、正常に読み取られたバイト数を返します。

注意

プロパティを呼び出CanReadして、 NetworkStream が読み取り可能かどうかを確認します。 読み取り不可能な から NetworkStream 読み取ろうとすると、 が表示 InvalidOperationExceptionされます。

注意

IOException受け取った場合は、 プロパティを InnerException 調べて、 SocketExceptionが原因かどうかを確認します。 その場合は、 プロパティを ErrorCode 使用して特定のエラー コードを取得し、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

適用対象

Read(Byte[], Int32, Int32)

NetworkStream からデータを読み取り、バイト配列に格納します。

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int size);
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] buffer, int offset, int size);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, size As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

パラメーター

buffer
Byte[]

Byte 型の配列。NetworkStream から読み取られたデータを格納するメモリ内の場所です。

offset
Int32

データの格納を開始する buffer 内の場所。

sizecount
Int32

NetworkStream から読み取るバイト数。

戻り値

NetworkStream から読み取るバイト数。

例外

buffernullです。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

または

size が、buffer から offset を引いた長さを超えています。

NetworkStream では読み取りがサポートされていません。

ソケットへのアクセス中にエラーが発生しました。

- または -

ネットワークからの読み取りでエラーが発生しました。

NetworkStream が閉じています。

次のコード例では、 を使用 DataAvailable して、データを読み取ることができるかどうかを判断します。 データが使用可能な場合は、 から読み取ります NetworkStream

byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

// Read all the data until the end of stream has been reached.
// The incoming message may be larger than the buffer size.
while (numberOfBytesRead > 0)
{
    myCompleteMessage.Append(Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
}

// Print out the received message to the console.
Console.WriteLine("You received the following message : " + myCompleteMessage);

注釈

このメソッドは、 にデータを読み取 buffer り、正常に読み取られたバイト数を返します。 この操作では Read 、 パラメーターで指定されたバイト数まで、使用可能な量のデータを size 読み取ります。

注意

プロパティを呼び出CanReadして、 NetworkStream が読み取り可能かどうかを確認します。 読み取り不可能な から NetworkStream 読み取ろうとすると、 が表示 InvalidOperationExceptionされます。

注意

IOException受け取った場合は、 プロパティを InnerException 調べて、 SocketExceptionが原因かどうかを確認します。 その場合は、 プロパティを ErrorCode 使用して特定のエラー コードを取得し、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

こちらもご覧ください

適用対象