SslStream.Read(Byte[], Int32, Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- offset
- Int32
Qui Int32 contient l’emplacement de base zéro dans buffer lequel commencer à stocker les données lues à 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.