NegotiateStream Classe

Definição

Fornece um fluxo que utiliza o protocolo de segurança Negotiate para autenticar o cliente, e opcionalmente o servidor, na comunicação cliente-servidor.

public ref class NegotiateStream : System::Net::Security::AuthenticatedStream
public class NegotiateStream : System.Net.Security.AuthenticatedStream
type NegotiateStream = class
    inherit AuthenticatedStream
Public Class NegotiateStream
Inherits AuthenticatedStream
Herança

Exemplos

O exemplo seguinte demonstra o lado cliente de uma ligação cliente-servidor que utiliza o NegotiateStream. O cliente autentica e envia uma mensagem ao servidor de forma assíncrona.

using System;
using System.Net;
using System.Net.Security;
using System.Net.Sockets;
using System.Text;

namespace Examples.NegotiateStreamExample
{
    public class ASynchronousAuthenticatingTcpClient
    {
        static TcpClient client = null;

        public static void Main(String[] args)
        {
            // Establish the remote endpoint for the socket.
            // For this example, use the local machine.
            IPHostEntry ipHostInfo = Dns.GetHostEntry("localhost");
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            // Client and server use port 11000.
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
            // Create a TCP/IP socket.
            client = new TcpClient();
            // Connect the socket to the remote endpoint.
            client.Connect(remoteEP);
            Console.WriteLine("Client connected to {0}.", remoteEP.ToString());
            // Ensure the client does not close when there is
            // still data to be sent to the server.
            client.LingerState = new LingerOption(true, 0);
            // Request authentication.
            NetworkStream clientStream = client.GetStream();
            NegotiateStream authStream = new NegotiateStream(clientStream, false);
            // Pass the NegotiateStream as the AsyncState object
            // so that it is available to the callback delegate.
            Task authenticateTask = authStream
                .AuthenticateAsClientAsync()
                .ContinueWith(task =>
                {
                    Console.WriteLine("Client ending authentication...");
                    Console.WriteLine("ImpersonationLevel: {0}", authStream.ImpersonationLevel);
                });

            Console.WriteLine("Client waiting for authentication...");
            // Wait until the result is available.
            authenticateTask.Wait();
            // Display the properties of the authenticated stream.
            AuthenticatedStreamReporter.DisplayProperties(authStream);
            // Send a message to the server.
            // Encode the test data into a byte array.
            byte[] message = Encoding.UTF8.GetBytes("Hello from the client.");
            Task writeTask = authStream
                .WriteAsync(message, 0, message.Length)
                .ContinueWith(task =>
                {
                    Console.WriteLine("Client ending write operation...");
                });

            writeTask.Wait();
            Console.WriteLine("Sent {0} bytes.", message.Length);
            // Close the client connection.
            authStream.Close();
            Console.WriteLine("Client closed.");
        }
    }

    // The following class displays the properties of an authenticatedStream.
    public class AuthenticatedStreamReporter
    {
        public static void DisplayProperties(AuthenticatedStream stream)
        {
            Console.WriteLine("IsAuthenticated: {0}", stream.IsAuthenticated);
            Console.WriteLine("IsMutuallyAuthenticated: {0}", stream.IsMutuallyAuthenticated);
            Console.WriteLine("IsEncrypted: {0}", stream.IsEncrypted);
            Console.WriteLine("IsSigned: {0}", stream.IsSigned);
            Console.WriteLine("IsServer: {0}", stream.IsServer);
        }
    }
}
Imports System.Text
Imports System.Net.Sockets
Imports System.Net.Security
Imports System.Net

Namespace Examples.NegotiateStreamExample

    Public Class ASynchronousAuthenticatingTcpClient

        Shared client As TcpClient = Nothing

        Public Shared Sub Main(args As String())
            ' Establish the remote endpoint for the socket.
            ' For this example, use the local machine.
            Dim ipHostInfo = Dns.GetHostEntry("localhost")
            Dim ipAddress = ipHostInfo.AddressList(0)

            ' Client and server use port 11000. 
            Dim remoteEP As New IPEndPoint(ipAddress, 11000)

            ' Create a TCP/IP socket.
            client = New TcpClient()

            ' Connect the socket to the remote endpoint.
            client.Connect(remoteEP)
            Console.WriteLine("Client connected to {0}.", remoteEP.ToString())

            ' Ensure the client does not close when there is 
            ' still data to be sent to the server.
            client.LingerState = (New LingerOption(True, 0))

            ' Request authentication.
            Dim clientStream = client.GetStream()
            Dim authStream As New NegotiateStream(clientStream, False)

            ' Pass the NegotiateStream as the AsyncState object 
            ' so that it is available to the callback delegate.
            Dim ar = authStream.BeginAuthenticateAsClient(
                New AsyncCallback(AddressOf EndAuthenticateCallback), authStream)

            Console.WriteLine("Client waiting for authentication...")

            ' Wait until the result is available.
            ar.AsyncWaitHandle.WaitOne()

            ' Display the properties of the authenticated stream.
            AuthenticatedStreamReporter.DisplayProperties(authStream)

            ' Send a message to the server.
            ' Encode the test data into a byte array.
            Dim message = Encoding.UTF8.GetBytes("Hello from the client.")
            ar = authStream.BeginWrite(message, 0, message.Length, 
                New AsyncCallback(AddressOf EndWriteCallback), authStream)
            ar.AsyncWaitHandle.WaitOne()
            Console.WriteLine("Sent {0} bytes.", message.Length)

            ' Close the client connection.
            authStream.Close()
            Console.WriteLine("Client closed.")

        End Sub

        ' The following method is called when the authentication completes.
        Public Shared Sub EndAuthenticateCallback(ar As IAsyncResult)

            Console.WriteLine("Client ending authentication...")
            Dim authStream = CType(ar.AsyncState, NegotiateStream)
            Console.WriteLine("ImpersonationLevel: {0}", authStream.ImpersonationLevel)

            ' End the asynchronous operation.
            authStream.EndAuthenticateAsClient(ar)

        End Sub

        ' The following method is called when the write operation completes.
        Public Shared Sub EndWriteCallback(ar As IAsyncResult)

            Console.WriteLine("Client ending write operation...")
            Dim authStream = CType(ar.AsyncState, NegotiateStream)

            ' End the asynchronous operation.
            authStream.EndWrite(ar)

        End Sub
    End Class

    ' The following class displays the properties of an AuthenticatedStream.
    Public Class AuthenticatedStreamReporter
        Public Shared Sub DisplayProperties(stream As AuthenticatedStream)
            Console.WriteLine("IsAuthenticated: {0}", stream.IsAuthenticated)
            Console.WriteLine("IsMutuallyAuthenticated: {0}", stream.IsMutuallyAuthenticated)
            Console.WriteLine("IsEncrypted: {0}", stream.IsEncrypted)
            Console.WriteLine("IsSigned: {0}", stream.IsSigned)
            Console.WriteLine("IsServer: {0}", stream.IsServer)
        End Sub
    End Class
End Namespace

O exemplo de código seguinte demonstra o lado servidor de uma ligação cliente-servidor que utiliza o NegotiateStream para autenticar o cliente e ler uma mensagem enviada pelo cliente.

using System;
using System.Net;
using System.Net.Security;
using System.Net.Sockets;
using System.Security.Authentication;
using System.Security.Principal;
using System.Text;
using System.IO;
using System.Threading;

namespace Examples.NegotiateStreamExample
{
    public class AsynchronousAuthenticatingTcpListener
    {
        public static void Main()
        {
            // Create an IPv4 TCP/IP socket.
            TcpListener listener = new TcpListener(IPAddress.Any, 11000);
            // Listen for incoming connections.
            listener.Start();
            while (true)
            {
                TcpClient clientRequest;
                // Application blocks while waiting for an incoming connection.
                // Type CNTL-C to terminate the server.
                clientRequest = listener.AcceptTcpClient();
                Console.WriteLine("Client connected.");
                // A client has connected.
                try
                {
                    AuthenticateClient(clientRequest);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }

        public static void AuthenticateClient(TcpClient clientRequest)
        {
            NetworkStream stream = clientRequest.GetStream();
            // Create the NegotiateStream.
            NegotiateStream authStream = new NegotiateStream(stream, false);
            // Save the current client and NegotiateStream instance
            // in a ClientState object.
            ClientState cState = new ClientState(authStream, clientRequest);
            // Listen for the client authentication request.
            Task authTask = authStream
                .AuthenticateAsServerAsync()
                .ContinueWith(task => { EndAuthenticateCallback(cState); });

            // Any exceptions that occurred during authentication are
            // thrown by the EndAuthenticateAsServer method.
            try
            {
                // This call blocks until the authentication is complete.
                authTask.Wait();
            }
            catch (AuthenticationException e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Authentication failed - closing connection.");
                return;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Closing connection.");
                return;
            }

            Task<int> readTask = authStream
                .ReadAsync(cState.Buffer, 0, cState.Buffer.Length);

            readTask
                .ContinueWith((task) => { EndReadCallback(cState, task.Result); })
                .Wait();
            // Finished with the current client.
            authStream.Close();
            clientRequest.Close();
        }

        private static void EndAuthenticateCallback(ClientState cState)
        {
            // Get the saved data.
            NegotiateStream authStream = (NegotiateStream)cState.AuthenticatedStream;
            Console.WriteLine("Ending authentication.");

            // Display properties of the authenticated client.
            IIdentity id = authStream.RemoteIdentity;
            Console.WriteLine("{0} was authenticated using {1}.",
                id.Name,
                id.AuthenticationType
            );
        }

        private static void EndReadCallback(ClientState cState, int bytes)
        {
            NegotiateStream authStream = (NegotiateStream)cState.AuthenticatedStream;
            // Read the client message.
            try
            {
                cState.Message.Append(Encoding.UTF8.GetChars(cState.Buffer, 0, bytes));
                if (bytes != 0)
                {
                    Task<int> readTask = authStream.ReadAsync(cState.Buffer, 0, cState.Buffer.Length);
                    readTask
                        .ContinueWith(task => { EndReadCallback(cState, task.Result); })
                        .Wait();

                    return;
                }
            }
            catch (Exception e)
            {
                // A real application should do something
                // useful here, such as logging the failure.
                Console.WriteLine("Client message exception:");
                Console.WriteLine(e);
                return;
            }
            IIdentity id = authStream.RemoteIdentity;
            Console.WriteLine("{0} says {1}", id.Name, cState.Message.ToString());
        }
    }
    // ClientState is the AsyncState object.
    internal class ClientState
    {
        private StringBuilder _message = null;

        internal ClientState(AuthenticatedStream a, TcpClient theClient)
        {
            AuthenticatedStream = a;
            Client = theClient;
        }
        internal TcpClient Client { get; }

        internal AuthenticatedStream AuthenticatedStream { get; }

        internal byte[] Buffer { get; } = new byte[2048];

        internal StringBuilder Message
        {
            get { return _message ??= new StringBuilder(); }
        }
    }
}

Observações

Use a NegotiateStream classe para autenticação e para ajudar a proteger a informação transmitida entre um cliente e um servidor. Usando NegotiateStream, pode fazer o seguinte.

  • Envie as credenciais do cliente para o servidor para Suplantação ou Delegação.
  • Solicitar autenticação do servidor.
  • Encripte e/ou assine os dados antes de os transmitir.

A autenticação deve ser realizada antes de transmitir informação. Os clientes solicitam autenticação usando os métodos síncronos AuthenticateAsClient , que bloqueiam até a autenticação ser concluída, ou os métodos assíncronos BeginAuthenticateAsClient , que não bloqueiam enquanto aguardam a conclusão da autenticação. Os servidores solicitam autenticação usando métodos síncronos AuthenticateAsServer ou assíncronos BeginAuthenticateAsServer . O cliente, e opcionalmente o servidor, é autenticado usando o protocolo de segurança Negotiate. O protocolo Kerberos é usado para autenticação se tanto o cliente como o servidor o suportarem; caso contrário, é usado NTLM. A NegotiateStream classe realiza a autenticação usando a Interface de Suporte de Segurança (SSPI).

Quando a autenticação for bem-sucedida, deve verificar as propriedades e IsEncryptedIsSigned para determinar que serviços de segurança serão utilizados NegotiateStream para ajudar a proteger os seus dados durante a transmissão. Verifique a IsMutuallyAuthenticated propriedade para determinar se ocorreu autenticação mútua. Pode obter informações sobre o cliente ou servidor remoto que utiliza a RemoteIdentity propriedade.

Se a autenticação falhar, receberá um AuthenticationException ou um InvalidCredentialException. Neste caso, pode tentar a autenticação novamente com uma credencial diferente.

Envia dados usando métodos síncronos Write ou assíncronos WriteAsyncBeginWrite. Recebes dados usando métodos síncronos Read ou assíncronos BeginReadReadAsync. Se serviços de segurança como encriptação ou assinatura estiverem ativados, estes são automaticamente aplicados aos seus dados pelo NegotiateStream.

O NegotiateStream transmite dados usando um fluxo que fornece ao criar o NegotiateStream. Quando fornece este fluxo subjacente, tem a opção de especificar se fechar o NegotiateStream fluxo também fecha o fluxo subjacente.

Construtores

Name Description
NegotiateStream(Stream, Boolean)

Inicializa uma nova instância da NegotiateStream classe usando o comportamento especificado Stream e de fecho do fluxo.

NegotiateStream(Stream)

Inicializa uma nova instância da NegotiateStream classe usando o especificado Stream.

Propriedades

Name Description
CanRead

Obtém um Boolean valor que indica se o fluxo subjacente é legível.

CanSeek

Obtém um Boolean valor que indica se o fluxo subjacente é procurável.

CanTimeout

Recebe um Boolean valor que indica se o fluxo subjacente suporta time-outs.

CanWrite

Obtém um Boolean valor que indica se o fluxo subjacente é gravável.

ImpersonationLevel

Obtém um valor que indica como o servidor pode usar as credenciais do cliente.

InnerStream

Obtém o fluxo usado por isto AuthenticatedStream para enviar e receber dados.

(Herdado de AuthenticatedStream)
IsAuthenticated

Recebe um Boolean valor que indica se a autenticação foi bem-sucedida.

IsEncrypted

Recebe um Boolean valor que indica se isto NegotiateStream usa encriptação de dados.

IsMutuallyAuthenticated

Recebe um Boolean valor que indica se tanto o servidor como o cliente foram autenticados.

IsServer

Recebe um Boolean valor que indica se o lado local da ligação usada por isto NegotiateStream foi autenticado como servidor.

IsSigned

Recebe um Boolean valor que indica se os dados enviados através deste fluxo estão assinados.

LeaveInnerStreamOpen

Obtém se o fluxo usado para AuthenticatedStream enviar e receber dados ficou aberto.

(Herdado de AuthenticatedStream)
Length

Obtém o comprimento do jato subjacente.

Position

Obtém ou define a posição atual no fluxo subjacente.

ReadTimeout

Obtém ou define o tempo que uma operação de leitura bloqueia à espera de dados.

RemoteIdentity

Obtém informações sobre a identidade da parte remota que partilha esta transmissão autenticada.

WriteTimeout

Obtém ou define o tempo que uma operação de escrita bloqueia à espera de dados.

Métodos

Name Description
AuthenticateAsClient()

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor.

AuthenticateAsClient(NetworkCredential, ChannelBinding, String, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza a credencial especificada, as opções de autenticação e a ligação de canal.

AuthenticateAsClient(NetworkCredential, ChannelBinding, String)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza a credencial do cliente especificada e a ligação ao canal.

AuthenticateAsClient(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais e opções de autenticação especificadas.

AuthenticateAsClient(NetworkCredential, String)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza a credencial do cliente especificada.

AuthenticateAsClientAsync()

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona.

AuthenticateAsClientAsync(NetworkCredential, ChannelBinding, String, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza a credencial especificada, as opções de autenticação e a ligação de canal.

AuthenticateAsClientAsync(NetworkCredential, ChannelBinding, String)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza a credencial do cliente especificada e a ligação ao canal.

AuthenticateAsClientAsync(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza as credenciais e opções de autenticação especificadas.

AuthenticateAsClientAsync(NetworkCredential, String)

Chamada pelos clientes para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza a credencial do cliente especificada.

AuthenticateAsServer()

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor.

AuthenticateAsServer(ExtendedProtectionPolicy)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza a política de proteção estendida especificada.

AuthenticateAsServer(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais do servidor especificadas, as opções de autenticação e a política de proteção alargada.

AuthenticateAsServer(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais do servidor e as opções de autenticação especificadas.

AuthenticateAsServerAsync()

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona.

AuthenticateAsServerAsync(ExtendedProtectionPolicy)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza a política de proteção estendida especificada.

AuthenticateAsServerAsync(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza as credenciais do servidor especificadas, as opções de autenticação e a política de proteção alargada.

AuthenticateAsServerAsync(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Chamada pelos servidores para autenticar o cliente, e opcionalmente o servidor, numa ligação cliente-servidor como uma operação assíncrona. O processo de autenticação utiliza as credenciais do servidor e as opções de autenticação especificadas.

BeginAuthenticateAsClient(AsyncCallback, Object)

Chamado pelos clientes para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. Este método não bloqueia.

BeginAuthenticateAsClient(NetworkCredential, ChannelBinding, String, AsyncCallback, Object)

Chamado pelos clientes para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais especificadas e a ligação de canal. Este método não bloqueia.

BeginAuthenticateAsClient(NetworkCredential, ChannelBinding, String, ProtectionLevel, TokenImpersonationLevel, AsyncCallback, Object)

Chamado pelos clientes para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais especificadas, as opções de autenticação e a ligação de canal. Este método não bloqueia.

BeginAuthenticateAsClient(NetworkCredential, String, AsyncCallback, Object)

Chamado pelos clientes para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais especificadas. Este método não bloqueia.

BeginAuthenticateAsClient(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel, AsyncCallback, Object)

Chamado pelos clientes para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais e opções de autenticação especificadas. Este método não bloqueia.

BeginAuthenticateAsServer(AsyncCallback, Object)

Chamado pelos servidores para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. Este método não bloqueia.

BeginAuthenticateAsServer(ExtendedProtectionPolicy, AsyncCallback, Object)

Chamado pelos servidores para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza a política de proteção estendida especificada. Este método não bloqueia.

BeginAuthenticateAsServer(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel, AsyncCallback, Object)

Chamado pelos servidores para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais do servidor especificadas, as opções de autenticação e a política de proteção alargada. Este método não bloqueia.

BeginAuthenticateAsServer(NetworkCredential, ProtectionLevel, TokenImpersonationLevel, AsyncCallback, Object)

Chamado pelos servidores para iniciar uma operação assíncrona de autenticação do cliente, e opcionalmente do servidor, numa ligação cliente-servidor. O processo de autenticação utiliza as credenciais do servidor e as opções de autenticação especificadas. Este método não bloqueia.

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de leitura assíncrona que lê dados do fluxo e os armazena no array especificado.

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de escrita assíncrona que escreve Bytes do buffer especificado para o fluxo.

Close()

Fecha o fluxo atual e liberta quaisquer recursos (como sockets e handles de ficheiros) associados ao fluxo atual. Em vez de chamar este método, certifique-se de que o fluxo é devidamente descartado.

(Herdado de Stream)
CopyTo(Stream, Int32)

Lê os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyTo(Stream)

Lê os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, CancellationToken)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um token de cancelamento especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado e um token de cancelamento. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
CreateWaitHandle()
Obsoleto.

Aloca um WaitHandle objeto.

(Herdado de Stream)
Dispose()

Liberta todos os recursos utilizados pelo Stream.

(Herdado de Stream)
Dispose(Boolean)

Liberta os recursos não geridos usados pelo NegotiateStream e opcionalmente liberta os recursos geridos.

DisposeAsync()

De forma assíncrona, liberta os recursos não geridos e geridos usados pelo NegotiateStream.

EndAuthenticateAsClient(IAsyncResult)

Termina uma operação pendente de autenticação assíncrona de cliente que foi iniciada com uma chamada para BeginAuthenticateAsClient.

EndAuthenticateAsServer(IAsyncResult)

Termina uma operação pendente de autenticação assíncrona de cliente que foi iniciada com uma chamada para BeginAuthenticateAsServer.

EndRead(IAsyncResult)

Termina uma operação de leitura assíncrona que foi iniciada com uma chamada para BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

EndWrite(IAsyncResult)

Termina uma operação de escrita assíncrona que foi iniciada com uma chamada para BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Flush()

Faz com que quaisquer dados em buffer sejam escritos no dispositivo subjacente.

FlushAsync()

Apaga assíncronamente todos os buffers deste fluxo e faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente.

(Herdado de Stream)
FlushAsync(CancellationToken)

Escreve de forma assíncrona quaisquer dados em buffer no dispositivo subjacente.

FlushAsync(CancellationToken)

Apaga assíncronamente todos os buffers deste fluxo, faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente e monitoriza os pedidos de cancelamento.

(Herdado de Stream)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
ObjectInvariant()
Obsoleto.

Fornece suporte para um Contract.

(Herdado de Stream)
Read(Byte[], Int32, Int32)

Lê dados deste fluxo e armazena-os no array especificado.

Read(Span<Byte>)

Quando sobreposto numa classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

(Herdado de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

A leitura assíncrona uma sequência de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
ReadAsync(Byte[], Int32, Int32)

A leitura assíncrona uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

(Herdado de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

A leitura assíncrona uma sequência de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
ReadByte()

Lê um byte do fluxo e avança a posição dentro do fluxo em um byte, ou devolve -1 se estiver no final do fluxo.

(Herdado de Stream)
Seek(Int64, SeekOrigin)

Lança NotSupportedException.

SetLength(Int64)

Define o comprimento do curso de água subjacente.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
Write(Byte[], Int32, Int32)

Escreva o número especificado de Bytes no fluxo subjacente usando o buffer e o deslocamento especificados.

Write(ReadOnlySpan<Byte>)

Quando sobreposto numa classe derivada, escreve uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos.

(Herdado de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
WriteAsync(Byte[], Int32, Int32)

Escreve assíncronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos.

(Herdado de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
WriteByte(Byte)

Escreve um byte na posição atual no fluxo e avança a posição dentro do fluxo em um byte.

(Herdado de Stream)

Métodos da Extensão

Name Description
ConfigureAwait(IAsyncDisposable, Boolean)

Configura como aguarda nas tarefas devolvidas de um descartável assíncrono será realizada.

Aplica-se a

Ver também