NetworkStream.Read Método

Definição

Sobrecargas

Nome Description
Read(Span<Byte>)

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

Read(Byte[], Int32, Int32)

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

Read(Span<Byte>)

Lê os dados e os NetworkStream 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 da NetworkStream.

Retornos

O número total de bytes lidos no buffer, entre zero (0) e o comprimento do buffer. O método retornará zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par realizou um desligamento normal.

Exceções

O NetworkStream não dá suporte à leitura.

Erro ao acessar o soquete.

-ou-

Há uma falha na 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.

Note

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

Note

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

Aplica-se a

Read(Byte[], Int32, Int32)

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

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int size);
public override int Read(byte[] buffer, int offset, int size);
override this.Read : byte[] * int * int -> int
abstract member 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

Parâmetros

buffer
Byte[]

Uma matriz de tipo Byte que é o local na memória para armazenar dados lidos da NetworkStream.

offset
Int32

O local no buffer qual começar a armazenar os dados.

size
Int32

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

Retornos

O número total de bytes lidos no buffer entre zero (0) e a contagem solicitada. O método retornará zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par realizou um desligamento normal.

Exceções

buffer é null.

offset é menor que 0.

-ou-

offset é maior que o comprimento de buffer.

-ou-

size é menor que 0.

-ou-

size é maior que o comprimento de buffer menos offset.

O NetworkStream não dá suporte à leitura.

Erro ao acessar o soquete.

-ou-

Há uma falha na leitura da rede.

Exemplos

O exemplo de código a seguir lê os NetworkStream dados de um buffer. Se os dados estiverem disponíveis, ele continuará lendo até que o final do fluxo seja atingido, acrescentando os dados recebidos a um StringBuilder.

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 count pelo parâmetro.

Note

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

Note

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

Confira também

Aplica-se a