SslStream.Read Yöntem

Tanım

Aşırı Yüklemeler

Name Description
Read(Span<Byte>)

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

Read(Byte[], Int32, Int32)

Bu akıştaki verileri okur ve belirtilen dizide depolar.

Read(Span<Byte>)

Kaynak:
SslStream.cs
Kaynak:
SslStream.cs
Kaynak:
SslStream.cs

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

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

Parametreler

buffer
Span<Byte>

Bellek bölgesi. Bu yöntem döndürdüğünde, bu bölgenin içeriği geçerli kaynaktan okunan baytlar ile değiştirilir.

Döndürülenler

Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa arabellek boyutundan küçük veya arabelleğin uzunluğu sıfır veya akışın sonuna ulaşılmışsa sıfır (0) olabilir.

Şunlara uygulanır

Read(Byte[], Int32, Int32)

Kaynak:
SslStream.cs
Kaynak:
SslStream.cs
Kaynak:
SslStream.cs
Kaynak:
SslStream.cs
Kaynak:
SslStream.cs

Bu akıştaki verileri okur ve belirtilen dizide depolar.

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

Parametreler

buffer
Byte[]

Byte Bu akıştan okunan baytları alan bir dizi.

offset
Int32

Int32 Bu akıştan okunan verilerin depolandığı sıfır tabanlı konumu buffer içeren bir.

count
Int32

Int32 Bu akıştan okunacak en fazla bayt sayısını içeren bir.

Döndürülenler

Int32 Okunan bayt sayısını belirten bir değer. Okunacak başka veri olmadığında 0 döndürür.

Özel durumlar

buffer, null'e eşittir.

offset, sıfırdan küçüktür.

-veya-

offset , uzunluğundan bufferbüyüktür.

-veya-

offset + sayısı, uzunluğundan bufferbüyüktür.

Okuma işlemi başarısız oldu. Hatanın nedenini belirlemek için varsa iç özel durumu denetleyin.

Devam eden bir okuma işlemi zaten var.

Bu nesne kapatıldı.

Kimlik doğrulaması gerçekleşmedi.

Örnekler

Aşağıdaki kod örneği, bir SslStream'den okumayı gösterir.

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

Açıklamalar

yöntemi, akıştan en fazla count bayt sayısını okur ve başında bufferoffsetdepolar. Birden çok eşzamanlı okuma işlemi gerçekleştiremezsiniz.

Kimlik doğrulaması başarılı olana kadar bu yöntemi çağıramazsınız. Kimlik doğrulaması yapmak için , veya AuthenticateAsClient, BeginAuthenticateAsClientAuthenticateAsServer yöntemlerinden birini BeginAuthenticateAsServerçağırın.

Bu işlemi zaman uyumsuz olarak gerçekleştirmek için yöntemini kullanın BeginRead .

Şunlara uygulanır