다음을 통해 공유


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.

static void AuthenticateClient( TcpClient^ clientRequest )
{
   NetworkStream^ stream = clientRequest->GetStream();
   
   // Create the NegotiateStream.
   NegotiateStream^ authStream = gcnew NegotiateStream( stream,false );
   
   // Perform the server side of the authentication.
   authStream->AuthenticateAsServer();
   
   // Display properties of the authenticated client.
   IIdentity^ id = authStream->RemoteIdentity;
   Console::WriteLine( L"{0} was authenticated using {1}.", id->Name, id->AuthenticationType );
   
   // Read a message from the client.
   array<Byte>^buffer = gcnew array<Byte>(2048);
   int charLength = authStream->Read( buffer, 0, buffer->Length );
   String^ messageData = gcnew String( Encoding::UTF8->GetChars( buffer, 0, buffer->Length ) );
   Console::WriteLine( L"READ {0}", messageData );
   
   // Finished with the current client.
   authStream->Close();
   
   // Close the client connection.
   clientRequest->Close();
}


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.

성공적으로 인증될 때까지 이 메서드를 호출할 수 없습니다. 인증하려면 , , , AuthenticateAsClientAsync, AuthenticateAsServerAsyncBeginAuthenticateAsClientAuthenticateAsServer또는 BeginAuthenticateAsServer 메서드 중 AuthenticateAsClient하나를 호출합니다.

이 작업을 비동기적으로 수행하려면 메서드를 ReadAsync 사용합니다.

적용 대상