Condividi tramite


NegotiateStream.Read(Byte[], Int32, Int32) Metodo

Definizione

Legge i dati da questo flusso e li archivia nella matrice specificata.

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

Parametri

buffer
Byte[]

Matrice Byte che riceve i byte letti dal flusso.

offset
Int32

Valore Int32 contenente la posizione in base zero nel buffer da cui iniziare l'archiviazione dei dati letti da questo flusso.

count
Int32

Valore Int32 contenente il numero massimo di byte da leggere dal flusso.

Restituisce

Valore Int32 che specifica il numero di byte letti dal flusso sottostante. Se non sono presenti altri dati da leggere, viene restituito 0.

Eccezioni

L'operazione di lettura non è riuscita.

L'autenticazione non è stata effettuata.

L'operazione Read(Byte[], Int32, Int32) è già in corso.

Esempio

Nell'esempio di codice seguente viene illustrata la lettura da un oggetto 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();
}

Commenti

Il metodo legge un massimo di count byte dal flusso corrente e li archivia a buffer partire da offset.

Non è possibile chiamare questo metodo fino a quando non è stata eseguita correttamente l'autenticazione. Per eseguire l'autenticazioneAuthenticateAsClient, chiamare uno dei metodi , AuthenticateAsClientAsync, BeginAuthenticateAsClientAuthenticateAsServer, AuthenticateAsServerAsync, o BeginAuthenticateAsServer .

Per eseguire questa operazione in modo asincrono, utilizzare il ReadAsync metodo .

Si applica a