Partilhar via


NetworkStream.Read Método

Definição

Sobrecargas

Read(Span<Byte>)

Lê dados do NetworkStream e os armazena em um intervalo de bytes na memória.

Read(Byte[], Int32, Int32)

Lê dados do NetworkStream e os armazena em uma matriz de bytes.

Read(Span<Byte>)

Origem:
NetworkStream.cs
Origem:
NetworkStream.cs
Origem:
NetworkStream.cs

Lê dados do NetworkStream e os armazena em um intervalo de bytes na memória.

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

Parâmetros

buffer
Span<Byte>

Uma região de memória para armazenar dados lidos do NetworkStream.

Retornos

O número de bytes lidos de NetworkStream.

Exceções

O NetworkStream não oferece suporte à leitura.

Ocorreu um erro ao acessar o soquete.

- ou -

Ocorreu uma falha de leitura da rede.

Comentários

Esse método lê o máximo de dados que está disponível no buffer parâmetro e retorna o número de bytes lidos com êxito.

Observação

Verifique se o NetworkStream é legível chamando a CanRead propriedade . Se você tentar ler de um NetworkStream que não é legível, receberá um InvalidOperationException.

Observação

Se você receber um IOException, marcar a InnerException propriedade para determinar se ela foi causada por um SocketException. Nesse caso, use a ErrorCode propriedade para obter o código de erro específico e consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Aplica-se a

Read(Byte[], Int32, Int32)

Origem:
NetworkStream.cs
Origem:
NetworkStream.cs
Origem:
NetworkStream.cs

Lê dados do NetworkStream e os armazena em uma matriz de bytes.

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

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que é o local na memória onde os dados lidos de NetworkStream serão armazenados.

offset
Int32

O local em buffer onde os dados começarão a ser armazenados.

sizecount
Int32

O número de bytes a serem lidos de NetworkStream.

Retornos

O número de bytes lidos de NetworkStream.

Exceções

buffer é null.

offset é menor que 0.

- ou -

offset é maior que o comprimento do buffer.

- ou -

size é menor que 0.

- ou -

size é maior que o tamanho de buffer menos offset.

O NetworkStream não oferece suporte à leitura.

Ocorreu um erro ao acessar o soquete.

- ou -

Ocorreu uma falha de leitura da rede.

Exemplos

O exemplo de código a seguir usa DataAvailable para determinar se os dados estão disponíveis para leitura. Se os dados estiverem disponíveis, eles serão lidos no 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);

Comentários

Esse método lê os dados buffer e retorna o número de bytes lidos com êxito. A Read operação lê o máximo de dados que estiver disponível, até o número de bytes especificados size pelo parâmetro .

Observação

Verifique se o NetworkStream é legível chamando a CanRead propriedade . Se você tentar ler de um NetworkStream que não é legível, receberá um InvalidOperationException.

Observação

Se você receber um IOException, marcar a InnerException propriedade para determinar se ela foi causada por um SocketException. Nesse caso, use a ErrorCode propriedade para obter o código de erro específico e consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Confira também

Aplica-se a