Aracılığıyla paylaş


NegotiateStream.Read(Byte[], Int32, Int32) Yöntem

Tanım

Bu akıştaki verileri okur ve belirtilen dizide depolar.

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

Parametreler

buffer
Byte[]

Byte Akıştan okunan baytları alan bir dizi.

offset
Int32

Int32 Bu akıştan okunan verileri depolamaya başlamak için sıfır tabanlı konumu buffer içeren.

count
Int32

Int32 Akıştan okunacak en fazla bayt sayısını içeren.

Döndürülenler

Int32 Temel alınan akıştan okunan bayt sayısını belirten bir değer. Okunacak veri kalmadığında 0 döndürür.

Özel durumlar

Okuma işlemi başarısız oldu.

Kimlik doğrulaması gerçekleşmedi.

Bir Read(Byte[], Int32, Int32) işlem zaten devam ediyor.

Örnekler

Aşağıdaki kod örneği bir NegotiateStream'den okumayı gösterir.

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

Açıklamalar

yöntemi geçerli akıştan en fazla count bayt sayısını okur ve başında depolar bufferoffset.

Kimlik doğrulaması başarılı olana kadar bu yöntemi çağıramazsınız. Kimlik doğrulaması yapmak için , , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServerAsyncAuthenticateAsServerveya BeginAuthenticateAsServer yöntemlerinden birini AuthenticateAsClientçağırın.

Bu işlemi zaman uyumsuz olarak gerçekleştirmek için yöntemini kullanın ReadAsync .

Şunlara uygulanır