NetworkStream.Read Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.
O NetworkStream está fechado.
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.
O NetworkStream está fechado.
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.