SslStream.Read Método

Definição

Sobrecargas

Name Description
Read(Span<Byte>)

Quando sobreposto numa classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

Read(Byte[], Int32, Int32)

Lê dados deste fluxo e armazena-os no array especificado.

Read(Span<Byte>)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Quando sobreposto numa classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

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 da memória. Quando este método retorna, o conteúdo desta região é substituído pelos bytes lidos da fonte atual.

Devoluções

O número total de bytes lidos no buffer. Isto pode ser inferior ao tamanho do buffer se não houver esse número de bytes disponível no momento, ou zero (0) se o comprimento do buffer for zero ou se o fim do fluxo tiver sido atingido.

Aplica-se a

Read(Byte[], Int32, Int32)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Lê dados deste fluxo e armazena-os no array especificado.

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

Parâmetros

buffer
Byte[]

Um Byte array que recebe os bytes lidos deste fluxo.

offset
Int32

A Int32 que contém a localização baseada em zero em buffer onde começar a armazenar os dados lidos deste fluxo.

count
Int32

A Int32 que contém o número máximo de bytes a ler deste fluxo.

Devoluções

Um valor que especifica o número de bytes lidos Int32 . Quando não há mais dados para ler, retorna 0.

Exceções

buffer é null.

offset é inferior a zero.

-ou-

offset é maior do que o comprimento de buffer.

-ou-

offset + contagem é maior que o comprimento de buffer.

A operação de leitura falhou. Verifique a exceção interna, se existir, para determinar a causa da falha.

Já está em curso uma operação de leitura.

Este objeto foi encerrado.

A autenticação não ocorreu.

Exemplos

O seguinte exemplo de código demonstra a leitura a partir de um SslStream.

static string ReadMessage(SslStream sslStream)
{
    // Read the  message sent by the server.
    // The end of the message is signaled using the
    // "<EOF>" marker.
    byte [] buffer = new byte[2048];
    StringBuilder messageData = new StringBuilder();
    int bytes = -1;
    do
    {
        bytes = sslStream.Read(buffer, 0, buffer.Length);

        // Use Decoder class to convert from bytes to UTF8
        // in case a character spans two buffers.
        Decoder decoder = Encoding.UTF8.GetDecoder();
        char[] chars = new char[decoder.GetCharCount(buffer,0,bytes)];
        decoder.GetChars(buffer, 0, bytes, chars,0);
        messageData.Append (chars);
        // Check for EOF.
        if (messageData.ToString().IndexOf("<EOF>") != -1)
        {
            break;
        }
    } while (bytes != 0);

    return messageData.ToString();
}
Private Shared Function ReadMessage(sslStream As SslStream) As String

    ' Read the  message sent by the server.
    ' The end of the message is signaled using the "<EOF>" marker.
    Dim buffer = New Byte(2048) {}
    Dim messageData = New StringBuilder()
    Dim bytes As Integer

    Do
        bytes = sslStream.Read(buffer, 0, buffer.Length)

        ' Use Decoder class to convert from bytes to UTF8
        ' in case a character spans two buffers.        
        Dim decoder As Decoder = Encoding.UTF8.GetDecoder()
        Dim chars = New Char(decoder.GetCharCount(buffer, 0, bytes) - 1) {}
        decoder.GetChars(buffer, 0, bytes, chars, 0)
        messageData.Append(chars)

        ' Check for EOF.
        If messageData.ToString().IndexOf("<EOF>") <> -1 Then Exit Do
        
    Loop While bytes <> 0

    Return messageData.ToString()

End Function

Observações

O método lê um máximo de count bytes do fluxo e armazena-os buffer a partir de .offset Não pode realizar múltiplas operações de leitura simultâneas.

Não pode chamar este método até ter autenticado com sucesso. Para autenticar, chame um dos AuthenticateAsClient, ou BeginAuthenticateAsClient, AuthenticateAsServer, BeginAuthenticateAsServer métodos.

Para realizar esta operação de forma assíncrona, use o BeginRead método.

Aplica-se a