NegotiateStream.Read(Byte[], Int32, Int32) メソッド

定義

このストリームからデータを読み取り、指定した配列に格納します。

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

このストリームから読み取られたデータの格納を開始するbufferの 0 から始まる場所を含むInt32

count
Int32

ストリームから読み取る最大バイト数を含む Int32

返品

基になるストリームから読み取られたバイト数を指定する Int32 値。 読み取るデータがそれ以上ない場合は、0 を返します。

例外

読み取り操作に失敗しました。

認証が行われません。

Read(Byte[], Int32, Int32)操作は既に進行中です。

次のコード例は、 NegotiateStreamからの読み取りを示しています。

public static void AuthenticateClient(TcpClient clientRequest)
{
    NetworkStream stream = clientRequest.GetStream();
    // Create the NegotiateStream.
    NegotiateStream authStream = new NegotiateStream(stream, false);
    // Perform the server side of the authentication.
    authStream.AuthenticateAsServer();
    // Display properties of the authenticated client.
    IIdentity id = authStream.RemoteIdentity;
    Console.WriteLine("{0} was authenticated using {1}.",
        id.Name,
        id.AuthenticationType
        );
    // Read a message from the client.
    byte [] buffer = new byte[2048];
    int charLength = authStream.Read(buffer, 0, buffer.Length);
    string messageData = new String(Encoding.UTF8.GetChars(buffer, 0, buffer.Length));

    Console.WriteLine("READ {0}", messageData);
    // Finished with the current client.
    authStream.Close();
    // Close the client connection.
    clientRequest.Close();
}

注釈

このメソッドは、現在のストリームから最大count バイトを読み取り、offsetから始まるbufferに格納します。

正常に認証されるまで、このメソッドを呼び出すことはできません。 認証するには、 AuthenticateAsClientAuthenticateAsClientAsyncBeginAuthenticateAsClientAuthenticateAsServerAuthenticateAsServerAsync、または BeginAuthenticateAsServer のいずれかのメソッドを呼び出します。

この操作を非同期的に実行するには、 ReadAsync メソッドを使用します。

適用対象