SslStream.Read(Byte[], Int32, Int32) Methode

Definitie

Leest gegevens uit deze stream en slaat deze op in de opgegeven matrix.

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

Parameters

buffer
Byte[]

Een Byte matrix die de bytes ontvangt die uit deze stroom zijn gelezen.

offset
Int32

Een Int32 die de op nul gebaseerde locatie buffer bevat waar de gegevens uit deze stroom moeten worden opgeslagen.

count
Int32

Een Int32 met het maximum aantal bytes dat uit deze stream moet worden gelezen.

Retouren

Een Int32 waarde die het aantal gelezen bytes aangeeft. Als er geen gegevens meer moeten worden gelezen, wordt 0 geretourneerd.

Uitzonderingen

buffer is null.

offset is kleiner dan nul.

– of –

offset is groter dan de lengte van buffer.

– of –

offset + count is groter dan de lengte van buffer.

De leesbewerking is mislukt. Controleer de binnenste uitzondering, indien aanwezig om de oorzaak van de fout te bepalen.

Er wordt al een leesbewerking uitgevoerd.

Dit object is gesloten.

Er is geen verificatie opgetreden.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u leest uit een 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

Opmerkingen

De methode leest maximaal bytes uit count de stream en slaat deze op offsetvanaf buffer . U kunt niet meerdere gelijktijdige leesbewerkingen uitvoeren.

U kunt deze methode pas aanroepen als u bent geverifieerd. Als u wilt verifiëren, roept u een van de AuthenticateAsClientmethoden , of BeginAuthenticateAsClient, AuthenticateAsServeraan BeginAuthenticateAsServer .

Gebruik de BeginRead methode om deze bewerking asynchroon uit te voeren.

Van toepassing op