SslStream.Read Metoda

Definicja

Przeciążenia

Nazwa Opis
Read(Span<Byte>)

Gdy przesłonięta w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przechodzi pozycję w strumieniu według liczby odczytanych bajtów.

Read(Byte[], Int32, Int32)

Odczytuje dane z tego strumienia i przechowuje je w określonej tablicy.

Read(Span<Byte>)

Źródło:
SslStream.cs
Źródło:
SslStream.cs
Źródło:
SslStream.cs

Gdy przesłonięta w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przechodzi pozycję w strumieniu według liczby odczytanych bajtów.

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

Parametry

buffer
Span<Byte>

Region pamięci. Gdy ta metoda zwraca, zawartość tego regionu jest zastępowana przez bajty odczytane z bieżącego źródła.

Zwraca

Całkowita liczba bajtów odczytanych do buforu. Może to być mniejsze niż rozmiar buforu, jeśli liczba bajtów nie jest obecnie dostępna lub zero (0), jeśli długość buforu wynosi zero lub osiągnięto koniec strumienia.

Dotyczy

Read(Byte[], Int32, Int32)

Źródło:
SslStream.cs
Źródło:
SslStream.cs
Źródło:
SslStream.cs
Źródło:
SslStream.cs
Źródło:
SslStream.cs

Odczytuje dane z tego strumienia i przechowuje je w określonej tablicy.

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

Parametry

buffer
Byte[]

Tablica Byte , która odbiera bajty odczytane z tego strumienia.

offset
Int32

Obiekt Int32 , który zawiera lokalizację opartą na zerach, w buffer której należy rozpocząć przechowywanie danych odczytanych ze strumienia.

count
Int32

Element Int32 zawierający maksymalną liczbę bajtów do odczytu z tego strumienia.

Zwraca

Int32 Wartość określająca liczbę odczytanych bajtów. Jeśli nie ma więcej danych do odczytu, zwraca wartość 0.

Wyjątki

Parametr buffer ma wartość null.

Parametr offset ma wartość niższą niż zero.

— lub —

offsetwartość jest większa niż długość .buffer

— lub —

offset + liczba jest większa niż długość buffer.

Operacja odczytu nie powiodła się. Sprawdź wyjątek wewnętrzny, jeśli istnieje, aby określić przyczynę awarii.

Trwa już operacja odczytu.

Ten obiekt został zamknięty.

Uwierzytelnianie nie wystąpiło.

Przykłady

W poniższym przykładzie kodu pokazano odczyt z elementu 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

Uwagi

Metoda odczytuje maksymalnie count bajty ze strumienia i zapisuje je na buffer początku na offset. Nie można wykonywać wielu równoczesnych operacji odczytu.

Nie można wywołać tej metody do momentu pomyślnego uwierzytelnienia. Aby uwierzytelnić metodę AuthenticateAsClient, lub BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer należy uwierzytelnić.

Aby wykonać tę operację asynchronicznie, użyj BeginRead metody .

Dotyczy