SslStream.Read(Byte[], Int32, Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- offset
- Int32
Obiekt Int32 zawierający lokalizację opartą na zerach, w buffer
której należy rozpocząć przechowywanie danych odczytanych ze strumienia.
Zwraca
Int32 Wartość określająca liczbę odczytanych bajtów. Jeśli nie ma więcej danych do odczytania, zwraca wartość 0.
Wyjątki
buffer
to null
.
Parametr offset
ma wartość niższą niż zero.
-lub-
offset
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.
private:
static String^ ReadMessage(SslStream^ sslStream)
{
// Read the message sent by the server.
// The end of the message is signaled using the
// "<EOF>" marker.
array<Byte>^ buffer = gcnew array<Byte>(2048);
StringBuilder^ messageData = gcnew StringBuilder;
// Use Decoder class to convert from bytes to UTF8
// in case a character spans two buffers.
Encoding^ u8 = Encoding::UTF8;
Decoder^ decoder = u8->GetDecoder();
int bytes = -1;
do
{
bytes = sslStream->Read(buffer, 0, buffer->Length);
array<__wchar_t>^ chars = gcnew array<__wchar_t>(
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();
}
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 wykonać wielu jednoczesnych 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 .