Freigeben über


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

Definition

Liest Daten aus diesem Stream und speichert sie im angegebenen Array.

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[]

Ein Byte-Array, das die Bytes empfängt, die aus dem Stream gelesen werden.

offset
Int32

Ein Int32, der den nullbasierten Speicherort im buffer enthält, ab dem die aus diesem Stream gelesenen Daten gespeichert werden.

count
Int32

Ein Int32, der die maximale Anzahl der aus dem Stream gelesenen Bytes enthält.

Gibt zurück

Ein Int32-Wert, der die Anzahl von Bytes angibt, die aus dem zugrunde liegenden Datenstrom gelesen werden. Gibt 0 (null) zurück, wenn keine weiteren zu lesenden Daten vorhanden sind.

Ausnahmen

Fehler beim Lesevorgang.

Es ist keine Authentifizierung erfolgt.

Es wird gerade ein Read(Byte[], Int32, Int32)-Vorgang ausgeführt.

Beispiele

Im folgenden Codebeispiel wird das Lesen aus einem NegotiateStreamveranschaulicht.

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();
}

Hinweise

Die -Methode liest maximal count Bytes aus dem aktuellen Stream und speichert sie ab bufferoffsetin .

Sie können diese Methode erst aufrufen, wenn Sie sich erfolgreich authentifiziert haben. Rufen Sie zum Authentifizieren eine der AuthenticateAsClientMethoden , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServer, AuthenticateAsServerAsyncoder BeginAuthenticateAsServer auf.

Verwenden Sie die ReadAsync -Methode, um diesen Vorgang asynchron auszuführen.

Gilt für: