SslStream.Read(Byte[], Int32, Int32) Méthode

Définition

Lit les données de ce flux et les stocke dans le tableau spécifié.

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

Paramètres

buffer
Byte[]

Tableau Byte qui reçoit les octets lus à partir de ce flux.

offset
Int32

Qui Int32 contient l’emplacement de base zéro dans buffer lequel commencer à stocker les données lues à partir de ce flux.

count
Int32

Qui Int32 contient le nombre maximal d’octets à lire à partir de ce flux.

Retours

Valeur Int32 qui spécifie le nombre d’octets lus. Lorsqu’il n’y a plus de données à lire, retourne 0.

Exceptions

buffer a la valeur null.

offset est inférieur à zéro.

-ou-

offset est supérieur à la longueur de buffer.

-ou-

offset + nombre est supérieur à la longueur de buffer.

Échec de l’opération de lecture. Vérifiez l’exception interne, si elle est présente pour déterminer la cause de l’échec.

Il existe déjà une opération de lecture en cours.

Cet objet a été fermé.

L’authentification n’a pas eu lieu.

Exemples

L’exemple de code suivant illustre la lecture à partir d’un 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

Remarques

La méthode lit un maximum d’octets count à partir du flux et les stocke en buffer commençant à offset. Vous ne pouvez pas effectuer plusieurs opérations de lecture simultanées.

Vous ne pouvez pas appeler cette méthode tant que vous n’avez pas correctement authentifié. Pour authentifier l’appel de l’une AuthenticateAsClientdes méthodes, ou BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer

Pour effectuer cette opération de façon asynchrone, utilisez la BeginRead méthode.

S’applique à