NegotiateStream.Read(Byte[], Int32, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee datos de esta secuencia y los almacena en la matriz especificada.
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
Parámetros
- offset
- Int32
Int32 que contiene la ubicación de base cero de buffer
donde se comienza a almacenar los datos leídos de esta secuencia.
Devoluciones
Un valor Int32 que especifica el número de bytes leídos de la secuencia subyacente. Cuando ya no quedan datos por leer, devuelve 0.
Excepciones
Se ha producido un error en la operación de lectura.
No se ha producido la autenticación.
Una operación Read(Byte[], Int32, Int32) ya está en curso.
Ejemplos
En el ejemplo de código siguiente se muestra la lectura de un 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();
}
Comentarios
El método lee un máximo de count
bytes de la secuencia actual y los almacena a buffer
partir offset
de .
No puede llamar a este método hasta que se haya autenticado correctamente. Para autenticarse, llame a uno de los AuthenticateAsClientmétodos , AuthenticateAsClientAsync, BeginAuthenticateAsClientAuthenticateAsServer, , AuthenticateAsServerAsynco BeginAuthenticateAsServer .
Para realizar esta operación de forma asincrónica, use el ReadAsync método .