Bagikan melalui


SslStream.Read(Byte[], Int32, Int32) Metode

Definisi

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

buffer
Byte[]

Array Byte yang menerima byte yang dibaca dari aliran ini.

offset
Int32

Int32 yang berisi lokasi berbasis nol untuk buffer mulai menyimpan data yang dibaca dari aliran ini.

count
Int32

Int32 yang berisi jumlah maksimum byte yang akan dibaca dari aliran ini.

Mengembalikan

Int32 Nilai yang menentukan jumlah byte yang dibaca. Ketika tidak ada lagi data yang akan dibaca, mengembalikan 0.

Pengecualian

bufferadalah 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 .

Berlaku untuk