SslStream.Read(Byte[], Int32, Int32) 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.
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
- offset
- Int32
Um Int32 que contém o local baseado em zero no buffer qual começar a armazenar os dados 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.