SslStream.Read Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Read(Span<Byte>) | |
| Read(Byte[], Int32, Int32) |
Считывает данные из этого потока и сохраняет их в заданном массиве. |
Read(Span<Byte>)
- Исходный код:
- 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
Параметры
Возвращаемое значение
Применяется к
Read(Byte[], Int32, Int32)
- Исходный код:
- 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
Параметры
- offset
- Int32
Значение Int32, содержащее расположение (начиная с нуля) в массиве buffer, с которого следует начинать сохранение данных, считанных их этого потока.
Возвращаемое значение
Значение Int32, указывающее количество считанных байтов. Когда данных для чтения не остается, возвращает 0.
Исключения
buffer имеет значение null.
Значение параметра offset меньше нуля.
-или-
Значение offset превышает длину buffer.
-или-
Сумма значений offset и count превышает длину массива 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, AuthenticateAsServer. BeginAuthenticateAsServer
Чтобы выполнить эту операцию асинхронно, используйте BeginRead метод .