SslStream.Read Método

Definição

Sobrecargas

Nome Description
Read(Span<Byte>)

Quando substituído em uma 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 desse fluxo e os armazena na matriz especificada.

Read(Span<Byte>)

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

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

Retornos

O número total de bytes lidos no buffer. Isso pode ser menor do que o tamanho do buffer se muitos bytes não estiverem disponíveis no momento ou zero (0) se o comprimento do buffer for zero ou o final 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 desse fluxo e os armazena na matriz especificada.

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[]

Uma Byte matriz que recebe os bytes lidos desse fluxo.

offset
Int32

Um Int32 que contém o local baseado em zero no buffer qual começar a armazenar os dados lidos desse fluxo.

count
Int32

Um Int32 que contém o número máximo de bytes a serem lidos desse fluxo.

Retornos

Um Int32 valor que especifica o número de bytes lidos. Quando não houver mais dados a serem lidos, retornará 0.

Exceções

buffer é null.

offset é menor que zero.

- ou -

offset é maior que o comprimento de buffer.

- ou -

offset + a contagem é maior que o comprimento de buffer.

Falha na operação de leitura. Verifique a exceção interna, se estiver presente para determinar a causa da falha.

Já há uma operação de leitura em andamento.

Este objeto foi fechado.

A autenticação não ocorreu.

Exemplos

O exemplo de código a seguir demonstra a leitura 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

Comentários

O método lê um máximo de count bytes do fluxo e os armazena no buffer início em offset. Você não pode executar várias operações de leitura simultâneas.

Você não pode chamar esse método até que tenha se autenticado com êxito. Para autenticar a AuthenticateAsClientchamada de um dos métodos , ou BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer .

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

Aplica-se a