SslStream.Read(Byte[], Int32, Int32) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca data dari aliran ini dan menyimpannya dalam array yang ditentukan.
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
Parameter
- offset
- Int32
Int32 yang berisi lokasi berbasis nol untuk buffer
mulai menyimpan data yang dibaca dari aliran ini.
Mengembalikan
Int32 Nilai yang menentukan jumlah byte yang dibaca. Ketika tidak ada lagi data yang akan dibaca, mengembalikan 0.
Pengecualian
buffer
adalah null
.
offset
kurang dari nol.
-atau-
offset
lebih besar dari panjang buffer
.
-atau-
offset
+ hitungan lebih besar dari panjang buffer
.
Operasi baca gagal. Periksa pengecualian dalam, jika ada untuk menentukan penyebab kegagalan.
Sudah ada operasi baca yang sedang berlangsung.
Objek ini telah ditutup.
Autentikasi belum terjadi.
Contoh
Contoh kode berikut menunjukkan pembacaan dari 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
Keterangan
Metode membaca maksimum count
byte dari aliran dan menyimpannya di buffer
awal di offset
. Anda tidak dapat melakukan beberapa operasi baca simultan.
Anda tidak dapat memanggil metode ini sampai Anda berhasil diautentikasi. Untuk mengautentikasi panggil salah AuthenticateAsClientsatu metode , atau BeginAuthenticateAsClient, AuthenticateAsServer, BeginAuthenticateAsServer .
Untuk melakukan operasi ini secara asinkron, gunakan BeginRead metode .