SslStream.Read Метод

Определение

Перегрузки

Имя Описание
Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

Read(Byte[], Int32, Int32)

Считывает данные из этого потока и сохраняет его в указанном массиве.

Read(Span<Byte>)

Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

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

Параметры

buffer
Span<Byte>

Область памяти. При возвращении этого метода содержимое этого региона заменяется байтами, считываемыми из текущего источника.

Возвращаемое значение

Общее количество байтов, считываемых в буфер. Это может быть меньше размера буфера, если в данный момент не доступно много байтов или ноль (0), если длина буфера равна нулю или конец потока достигнута.

Применяется к

Read(Byte[], Int32, Int32)

Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs

Считывает данные из этого потока и сохраняет его в указанном массиве.

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

Параметры

buffer
Byte[]

Byte Массив, получающий байты, считываемые из этого потока.

offset
Int32

Объект Int32 , содержащий отсчитываемое от нуля расположение, в buffer котором начинается хранение данных из этого потока.

count
Int32

Значение Int32 , содержащее максимальное количество байтов для чтения из этого потока.

Возвращаемое значение

Int32 Значение, указывающее количество операций чтения байтов. Если больше нет данных для чтения, возвращается значение 0.

Исключения

buffer равно null.

offset меньше нуля.

–или–

offset больше длины buffer.

–или–

offset + число больше длины buffer.

Сбой операции чтения. Проверьте внутреннее исключение, если присутствует, чтобы определить причину сбоя.

Операция чтения уже выполняется.

Этот объект был закрыт.

Проверка подлинности не произошла.

Примеры

В следующем примере кода показано чтение из объекта 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

Комментарии

Метод считывает максимум count байтов из потока и сохраняет их в buffer начале offset. Невозможно выполнить несколько одновременных операций чтения.

Этот метод нельзя вызвать, пока не будет успешно выполнена проверка подлинности. Чтобы выполнить проверку подлинности, вызовите один из AuthenticateAsClientметодов или BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer

Чтобы выполнить эту операцию асинхронно, используйте BeginRead метод.

Применяется к