NegotiateStream Класс

Определение

Предоставляет поток, использующий протокол безопасности Negotiate для проверки подлинности клиента, и, при необходимости, сервера при обмене данными в системе клиент-сервер.Provides a stream that uses the Negotiate security protocol to authenticate the client, and optionally the server, in client-server communication.

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
Наследование

Примеры

В следующем примере показана клиентская сторона соединения «клиент-сервер», использующая NegotiateStream.The following example demonstrates the client side of a client-server connection that uses the NegotiateStream. Клиент выполняет проверку подлинности и отправляет сообщение на сервер в асинхронном режиме.The client authenticates and sends a message to the server asynchronously.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Net::Sockets;
using namespace System::Text;

// The following class displays the properties of an authenticatedStream.
public ref class AuthenticatedStreamReporter
{
public:
   static void DisplayProperties( AuthenticatedStream^ stream )
   {
      Console::WriteLine( L"IsAuthenticated: {0}", stream->IsAuthenticated );
      Console::WriteLine( L"IsMutuallyAuthenticated: {0}", stream->IsMutuallyAuthenticated );
      Console::WriteLine( L"IsEncrypted: {0}", stream->IsEncrypted );
      Console::WriteLine( L"IsSigned: {0}", stream->IsSigned );
      Console::WriteLine( L"IsServer: {0}", stream->IsServer );
   }

};


public ref class ASynchronousAuthenticatingTcpClient
{
private:
   static TcpClient^ client = nullptr;

public:
   void Main()
   {
      
      // Establish the remote endpoint for the socket.
      // For this example, use the local machine.
      IPHostEntry^ ipHostInfo = Dns::GetHostEntry( Dns::GetHostName() );
      IPAddress^ ipAddress = ipHostInfo->AddressList[ 0 ];
      
      // Client and server use port 11000. 
      IPEndPoint^ remoteEP = gcnew IPEndPoint( ipAddress,11000 );
      
      // Create a TCP/IP socket.
      client = gcnew TcpClient;
      
      // Connect the socket to the remote endpoint.
      client->Connect( remoteEP );
      Console::WriteLine( L"Client connected to {0}.", remoteEP );
      
      // Ensure the client does not close when there is 
      // still data to be sent to the server.
      client->LingerState = (gcnew LingerOption( true,0 ));
      
      // Request authentication.
      NetworkStream^ clientStream = client->GetStream();
      NegotiateStream^ authStream = gcnew NegotiateStream( clientStream,false );
      
      // Pass the NegotiateStream as the AsyncState object 
      // so that it is available to the callback delegate.
      IAsyncResult^ ar = authStream->BeginAuthenticateAsClient( gcnew AsyncCallback( EndAuthenticateCallback ), authStream );
      
      Console::WriteLine( L"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.
      array<Byte>^message = Encoding::UTF8->GetBytes( L"Hello from the client." );
      ar = authStream->BeginWrite( message, 0, message->Length, gcnew AsyncCallback( EndWriteCallback ), authStream );
      
      ar->AsyncWaitHandle->WaitOne();
      Console::WriteLine( L"Sent {0} bytes.", message->Length );
      
      // Close the client connection.
      authStream->Close();
      Console::WriteLine( L"Client closed." );
   }


   // The following method is called when the authentication completes.
   static void EndAuthenticateCallback( IAsyncResult^ ar )
   {
      Console::WriteLine( L"Client ending authentication..." );
      NegotiateStream^ authStream = dynamic_cast<NegotiateStream^>(ar->AsyncState);
      
      // End the asynchronous operation.
      authStream->EndAuthenticateAsClient( ar );
      
      //         Console.WriteLine("AllowedImpersonation: {0}", authStream.AllowedImpersonation);
   }


   // The following method is called when the write operation completes.
   static void EndWriteCallback( IAsyncResult^ ar )
   {
      Console::WriteLine( L"Client ending write operation..." );
      NegotiateStream^ authStream = dynamic_cast<NegotiateStream^>(ar->AsyncState);
      
      // End the asynchronous operation.
      authStream->EndWrite( ar );
   }

};

void main()
{
   ASynchronousAuthenticatingTcpClient^ aatc = gcnew ASynchronousAuthenticatingTcpClient;
   aatc->Main();
}
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.
            IAsyncResult ar = authStream.BeginAuthenticateAsClient(
                new AsyncCallback(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.
            byte[] message = Encoding.UTF8.GetBytes("Hello from the client.");
            ar = authStream.BeginWrite(message, 0, message.Length,
                new AsyncCallback(EndWriteCallback),
                authStream);
            ar.AsyncWaitHandle.WaitOne();
            Console.WriteLine("Sent {0} bytes.", message.Length);
            // Close the client connection.
            authStream.Close();
            Console.WriteLine("Client closed.");
        }
        // The following method is called when the authentication completes.
        public static void EndAuthenticateCallback (IAsyncResult ar)
        {
            Console.WriteLine("Client ending authentication...");
            NegotiateStream authStream = (NegotiateStream) ar.AsyncState;
            Console.WriteLine("ImpersonationLevel: {0}", authStream.ImpersonationLevel);

            // End the asynchronous operation.
            authStream.EndAuthenticateAsClient(ar);
        }
        // The following method is called when the write operation completes.
        public static void EndWriteCallback (IAsyncResult ar)
        {
            Console.WriteLine("Client ending write operation...");
            NegotiateStream authStream = (NegotiateStream) ar.AsyncState;

            // End the asynchronous operation.
            authStream.EndWrite(ar);
        }
    }

    // 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

В следующем примере кода показана серверная часть соединения "клиент-сервер", использующая NegotiateStream для проверки подлинности клиента и чтения сообщения, отправленного клиентом.The following code example demonstrates the server side of a client-server connection that uses the NegotiateStream to authenticate the client and read a message sent by the client.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Net::Sockets;
using namespace System::Security::Authentication;
using namespace System::Security::Principal;
using namespace System::Text;
using namespace System::IO;
using namespace System::Threading;

// ClientState is the AsyncState object.
private ref class ClientState
{
private:
   AuthenticatedStream^ authStream;
   TcpClient^ client;
   array<Byte>^buffer;
   StringBuilder^ message;
   ManualResetEvent^ waiter;

internal:
   ClientState( AuthenticatedStream^ a, TcpClient^ theClient )
   {
      authStream = a;
      client = theClient;
      message = nullptr;
      buffer = gcnew array<Byte>(2048);
      waiter = gcnew ManualResetEvent( false );
   }

internal:
   property TcpClient^ Client 
   {
      TcpClient^ get()
      {
         return client;
      }
   }

   property AuthenticatedStream^ AuthStream 
   {
      AuthenticatedStream^ get()
      {
         return authStream;
      }
  }

   property array<Byte>^ Buffer 
   {
      array<Byte>^ get()
      {
         return buffer;
      }

   }

   property StringBuilder^ Message 
   {
      StringBuilder^ get()
      {
         if ( message == nullptr )
                  message = gcnew StringBuilder;

         return message;
      }

   }

   property ManualResetEvent^ Waiter 
   {
      ManualResetEvent^ get()
      {
         return waiter;
      }

   }

};

public ref class AsynchronousAuthenticatingTcpListener
{
public:
   int Main()
   {
      
      // Create an IPv4 TCP/IP socket. 
      TcpListener^ listener = gcnew TcpListener( IPAddress::Any,11000 );
      
      // Listen for incoming connections.
      listener->Start();
      while ( true )
      {
         TcpClient^ clientRequest = nullptr;
         
         // Application blocks while waiting for an incoming connection.
         // Type CNTL-C to terminate the server.
         clientRequest = listener->AcceptTcpClient();
         Console::WriteLine( L"Client connected." );
         
         // A client has connected. 
         try
         {
            AuthenticateClient( clientRequest );
         }
         catch ( Exception^ e ) 
         {
            Console::WriteLine( e );
            continue;
         }

      }
   }


   static void AuthenticateClient( TcpClient^ clientRequest )
   {
      NetworkStream^ stream = clientRequest->GetStream();
      
      // Create the NegotiateStream.
      NegotiateStream^ authStream = gcnew NegotiateStream( stream,false );
      
      // Save the current client and NegotiateStream instance 
      // in a ClientState object.
      ClientState^ cState = gcnew ClientState( authStream,clientRequest );
      
      // Listen for the client authentication request.
      authStream->BeginAuthenticateAsServer( gcnew AsyncCallback( EndAuthenticateCallback ), cState );
      
      // Wait until the authentication completes.
      cState->Waiter->WaitOne();
      cState->Waiter->Reset();
      authStream->BeginRead( cState->Buffer, 0, cState->Buffer->Length, gcnew AsyncCallback( EndReadCallback ), cState );
      cState->Waiter->WaitOne();
      
      // Finished with the current client.
      authStream->Close();
      clientRequest->Close();
   }


   // The following method is invoked by the
   // BeginServerAuthenticate callback delegate.
   static void EndAuthenticateCallback( IAsyncResult^ ar )
   {
      
      // Get the saved data.
      ClientState^ cState = dynamic_cast<ClientState^>(ar->AsyncState);
      TcpClient^ clientRequest = cState->Client;
      NegotiateStream^ authStream = dynamic_cast<NegotiateStream^>(cState->AuthStream);
      Console::WriteLine( L"Ending authentication." );
      
      // Any exceptions that occurred during authentication are
      // thrown by the EndServerAuthenticate method.
      try
      {
         
         // This call blocks until the authentication is complete.
         authStream->EndAuthenticateAsServer( ar );
      }
      catch ( AuthenticationException^ e ) 
      {
         Console::WriteLine( e );
         Console::WriteLine( L"Authentication failed - closing connection." );
         cState->Waiter->Set();
         return;
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e );
         Console::WriteLine( L"Closing connection." );
         cState->Waiter->Set();
         return;
      }

      
      // Display properties of the authenticated client.
      IIdentity^ id = authStream->RemoteIdentity;
      Console::WriteLine( L"{0} was authenticated using {1}.", id->Name, id->AuthenticationType );
      cState->Waiter->Set();
   }


   static void EndReadCallback( IAsyncResult^ ar )
   {
      
      // Get the saved data.
      ClientState^ cState = dynamic_cast<ClientState^>(ar->AsyncState);
      TcpClient^ clientRequest = cState->Client;
      NegotiateStream^ authStream = dynamic_cast<NegotiateStream^>(cState->AuthStream);
      
      // Get the buffer that stores the message sent by the client.
      int bytes = -1;
      
      // Read the client message.
      try
      {
         bytes = authStream->EndRead( ar );
         cState->Message->Append( Encoding::UTF8->GetChars( cState->Buffer, 0, bytes ) );
         if ( bytes != 0 )
         {
            authStream->BeginRead( cState->Buffer, 0, cState->Buffer->Length, gcnew AsyncCallback( EndReadCallback ), cState );
            return;
         }
      }
      catch ( Exception^ e ) 
      {
         
         // A real application should do something
         // useful here, such as logging the failure.
         Console::WriteLine( L"Client message exception:" );
         Console::WriteLine( e );
         cState->Waiter->Set();
         return;
      }

      IIdentity^ id = authStream->RemoteIdentity;
      Console::WriteLine( L"{0} says {1}", id->Name, cState->Message );
      cState->Waiter->Set();
   }

};

void main()
{
   AsynchronousAuthenticatingTcpListener^ aatl = gcnew AsynchronousAuthenticatingTcpListener;
   aatl->Main();
}

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 = null;
                // 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);
                    continue;
                }

            }
        
        }
        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.
            authStream.BeginAuthenticateAsServer (
                new AsyncCallback(EndAuthenticateCallback),
                cState
                );
            // Wait until the authentication completes.
            cState.Waiter.WaitOne();
            cState.Waiter.Reset();
            authStream.BeginRead(cState.Buffer, 0, cState.Buffer.Length, 
                   new AsyncCallback(EndReadCallback), 
                   cState);
            cState.Waiter.WaitOne();
            // Finished with the current client.
            authStream.Close();
            clientRequest.Close();
        }
        // The following method is invoked by the
        // BeginAuthenticateAsServer callback delegate.

        public static void EndAuthenticateCallback (IAsyncResult ar)
        {
            // Get the saved data.
            ClientState cState = (ClientState) ar.AsyncState;
            TcpClient clientRequest = cState.Client;
            NegotiateStream authStream = (NegotiateStream) cState.AuthenticatedStream;
            Console.WriteLine("Ending authentication.");
            // Any exceptions that occurred during authentication are
            // thrown by the EndAuthenticateAsServer method.
            try 
            {
                // This call blocks until the authentication is complete.
                authStream.EndAuthenticateAsServer(ar);
            }
            catch (AuthenticationException e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Authentication failed - closing connection.");
                cState.Waiter.Set();
                return;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Closing connection.");
                cState.Waiter.Set();
                return;
            }
            // Display properties of the authenticated client.
            IIdentity id = authStream.RemoteIdentity;
            Console.WriteLine("{0} was authenticated using {1}.", 
                id.Name, 
                id.AuthenticationType
                );
            cState.Waiter.Set();

    }
        public static void EndReadCallback(IAsyncResult ar)
        {
            // Get the saved data.
            ClientState cState = (ClientState) ar.AsyncState;
            TcpClient clientRequest = cState.Client;
            NegotiateStream authStream = (NegotiateStream) cState.AuthenticatedStream; 
            // Get the buffer that stores the message sent by the client.
            int bytes = -1;
            // Read the client message.
            try
            {
                    bytes = authStream.EndRead(ar);
                    cState.Message.Append(Encoding.UTF8.GetChars(cState.Buffer, 0, bytes));
                    if (bytes != 0)
                    {
                         authStream.BeginRead(cState.Buffer, 0, cState.Buffer.Length, 
                               new AsyncCallback(EndReadCallback), 
                               cState);
                               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);
                cState.Waiter.Set();
                return;
            }
            IIdentity id = authStream.RemoteIdentity;
            Console.WriteLine("{0} says {1}", id.Name, cState.Message.ToString());
            cState.Waiter.Set();
        }
    }
    // ClientState is the AsyncState object.
    internal class ClientState
    {
        private AuthenticatedStream authStream = null;
        private  TcpClient client = null;
        byte[] buffer = new byte[2048];
        StringBuilder message = null;
        ManualResetEvent waiter = new ManualResetEvent(false);
        internal ClientState(AuthenticatedStream a, TcpClient theClient)
        {
            authStream = a;
            client = theClient;
        }
        internal TcpClient Client
        { 
            get { return client;}
        }
        internal AuthenticatedStream AuthenticatedStream
        {
            get { return authStream;}
        }
        internal byte[] Buffer
        {
              get { return buffer;}
        }
        internal StringBuilder Message
        {
            get 
            { 
                if (message == null)
                    message = new StringBuilder();
                return message;
             }
        }
        internal ManualResetEvent Waiter
        {
            get 
            { 
                return waiter;
             }
        }
    }
}

Комментарии

Используйте класс NegotiateStream для проверки подлинности и защиты данных, передаваемых между клиентом и сервером.Use the NegotiateStream class for authentication and to help secure information transmitted between a client and a server. С помощью NegotiateStreamможно выполнить следующие действия.Using NegotiateStream, you can do the following.

  • Отправка учетных данных клиента на сервер для олицетворения или делегирования.Send the client's credentials to the server for Impersonation or Delegation.

  • Запрос проверки подлинности сервера.Request server authentication.

  • Зашифруйте и/или Подпишите данные перед передачей.Encrypt and/or sign data before transmitting it.

Перед передачей информации необходимо выполнить проверку подлинности.Authentication must be performed before transmitting information. Клиенты запрашивают проверку подлинности с помощью синхронных методов AuthenticateAsClient, которые блокируются до завершения проверки подлинности, или асинхронных BeginAuthenticateAsClient методов, которые не блокируются при ожидании завершения проверки подлинности.Clients request authentication using the synchronous AuthenticateAsClient methods, which block until the authentication completes, or the asynchronous BeginAuthenticateAsClient methods, which do not block while waiting for the authentication to complete. Серверы запрашивают проверку подлинности с помощью синхронных AuthenticateAsServer или асинхронных методов BeginAuthenticateAsServer.Servers request authentication using the synchronous AuthenticateAsServer or asynchronous BeginAuthenticateAsServer methods. Клиент и, при необходимости, сервер проходят проверку подлинности с помощью протокола безопасности Negotiate.The client, and optionally the server, is authenticated using the Negotiate security protocol. В системах Windows 95/98 используется протокол Windows NT LAN Manager (NTLM), используемый для проверки подлинности.On Windows 95/98 systems, Windows NT LAN Manager (NTLM) is the protocol used for authentication. На других платформах протокол Kerberos используется для проверки подлинности, если он поддерживается и клиентом, и сервером. в противном случае используется NTLM.On other platforms the Kerberos protocol is used for authentication if both client and server support it; otherwise NTLM is used. Подробное описание этих протоколов см. в документации по пакету SDK для платформы на сайте MSDN по адресу msdn.microsoft.com/library/.For detailed descriptions of these protocols, see the Platform SDK documentation on MSDN, at msdn.microsoft.com/library/. Класс NegotiateStream выполняет проверку подлинности с помощью интерфейса поставщика поддержки безопасности (SSPI).The NegotiateStream class performs the authentication using the Security Support Provider Interface (SSPI).

После выполнения проверки подлинности необходимо проверить свойства IsEncrypted и IsSigned, чтобы определить, какие службы безопасности будут использоваться NegotiateStream для защиты данных во время передачи.When authentication succeeds, you must check the IsEncrypted and IsSigned properties to determine what security services will be used by the NegotiateStream to help secure your data during transmission. Проверьте свойство IsMutuallyAuthenticated, чтобы определить, была ли выполнена взаимная проверка подлинности.Check the IsMutuallyAuthenticated property to determine whether mutual authentication occurred. Сведения об удаленном клиенте или сервере можно получить с помощью свойства RemoteIdentity.You can get information about the remote client or server using the RemoteIdentity property.

В случае сбоя проверки подлинности вы получите AuthenticationException или InvalidCredentialException.If the authentication fails, you will receive an AuthenticationException or a InvalidCredentialException. В этом случае можно повторить попытку проверки подлинности с другими учетными данными.In this case, you can retry the authentication with a different credential.

Данные отправляются с помощью синхронных Write или асинхронных методов BeginWrite.You send data using the synchronous Write or asynchronous BeginWrite methods. Данные поступают с помощью синхронных Read или асинхронных методов BeginRead.You receive data using the synchronous Read or asynchronous BeginRead methods. Если службы безопасности, такие как шифрование или подпись, включены, они автоматически применяются к данным NegotiateStream.If security services such as encryption or signing are enabled, these are automatically applied to your data by the NegotiateStream.

NegotiateStream передает данные с помощью потока, указываемого при создании NegotiateStream.The NegotiateStream transmits data using a stream that you supply when creating the NegotiateStream. При указании этого базового потока можно указать, будет ли закрыт NegotiateStream также закрывать базовый поток.When you supply this underlying stream, you have the option to specify whether closing the NegotiateStream also closes the underlying stream.

Конструкторы

NegotiateStream(Stream)

Инициализирует новый экземпляр класса NegotiateStream с использованием указанного объекта Stream.Initializes a new instance of the NegotiateStream class using the specified Stream.

NegotiateStream(Stream, Boolean)

Инициализирует новый экземпляр класса NegotiateStream, используя заданный поток Stream и параметр, указывающий поведение потока при закрытии.Initializes a new instance of the NegotiateStream class using the specified Stream and stream closure behavior.

Свойства

CanRead

Возвращает значение типа Boolean, указывающее, разрешено ли чтение из базового потока.Gets a Boolean value that indicates whether the underlying stream is readable.

CanSeek

Возвращает значение типа Boolean, указывающее, разрешен ли поиск в базовом потоке.Gets a Boolean value that indicates whether the underlying stream is seekable.

CanTimeout

Возвращает значение типа Boolean, указывающее, поддерживает ли базовый поток использование времени ожидания.Gets a Boolean value that indicates whether the underlying stream supports time-outs.

CanWrite

Возвращает значение типа Boolean, указывающее, разрешена ли запись в базовый поток.Gets a Boolean value that indicates whether the underlying stream is writable.

ImpersonationLevel

Возвращает значение, указывающее, как сервер может использовать учетные данные клиента.Gets a value that indicates how the server can use the client's credentials.

InnerStream

Возвращает поток, используемый данным объектом AuthenticatedStream для отправки и получения данных.Gets the stream used by this AuthenticatedStream for sending and receiving data.

(Унаследовано от AuthenticatedStream)
IsAuthenticated

Возвращает значение типа Boolean, указывающее, была ли проверка подлинности успешной.Gets a Boolean value that indicates whether authentication was successful.

IsEncrypted

Возвращает значение типа Boolean, указывающее, использует ли данный поток NegotiateStream шифрование данных.Gets a Boolean value that indicates whether this NegotiateStream uses data encryption.

IsMutuallyAuthenticated

Возвращает значение типа Boolean, указывающее, что и сервер, и клиент прошли проверку подлинности.Gets a Boolean value that indicates whether both the server and the client have been authenticated.

IsServer

Возвращает значение типа Boolean, указывающее, прошла ли локальная сторона соединения, используемого данным потоком NegotiateStream, проверку подлинности как сервер.Gets a Boolean value that indicates whether the local side of the connection used by this NegotiateStream was authenticated as the server.

IsSigned

Возвращает значение типа Boolean, указывающее, подписаны ли данные, отправленные с помощью данного потока.Gets a Boolean value that indicates whether the data sent using this stream is signed.

LeaveInnerStreamOpen

Возвращает значение, определяющее, оставлен ли открытым поток, используемый данным объектом AuthenticatedStream для отправки и получения данных.Gets whether the stream used by this AuthenticatedStream for sending and receiving data has been left open.

(Унаследовано от AuthenticatedStream)
Length

Возвращает длину данных в базовом потоке.Gets the length of the underlying stream.

Position

Возвращает или задает текущую позицию в базовом потоке.Gets or sets the current position in the underlying stream.

ReadTimeout

Возвращает или задает временной интервал, в течение которого операция чтения будет блокироваться, ожидая получения данных.Gets or sets the amount of time a read operation blocks waiting for data.

RemoteIdentity

Возвращает сведения о идентификации удаленной стороны, использующей данный поток с проверкой подлинности.Gets information about the identity of the remote party sharing this authenticated stream.

WriteTimeout

Возвращает или задает период времени, в течение которого операция записи блокирует выполнение, ожидая данных.Gets or sets the amount of time a write operation blocks waiting for data.

Методы

AuthenticateAsClient()

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by clients to authenticate the client, and optionally the server, in a client-server connection.

AuthenticateAsClient(NetworkCredential, ChannelBinding, String)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by clients to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные клиента и привязку канала.The authentication process uses the specified client credential and the channel binding.

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

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by clients to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные, параметры проверки подлинности и привязку канала.The authentication process uses the specified credential, authentication options, and channel binding.

AuthenticateAsClient(NetworkCredential, String)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by clients to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные клиента.The authentication process uses the specified client credential.

AuthenticateAsClient(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by clients to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified credentials and authentication options.

AuthenticateAsClientAsync()

Вызывается клиентами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by clients to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation.

AuthenticateAsClientAsync(NetworkCredential, ChannelBinding, String)

Вызывается клиентами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by clients to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные клиента и привязку канала.The authentication process uses the specified client credential and the channel binding.

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

Вызывается клиентами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by clients to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные, параметры проверки подлинности и привязку канала.The authentication process uses the specified credential, authentication options, and channel binding.

AuthenticateAsClientAsync(NetworkCredential, String)

Вызывается клиентами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by clients to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные клиента.The authentication process uses the specified client credential.

AuthenticateAsClientAsync(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Вызывается клиентами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by clients to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified credentials and authentication options.

AuthenticateAsServer()

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by servers to authenticate the client, and optionally the server, in a client-server connection.

AuthenticateAsServer(ExtendedProtectionPolicy)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by servers to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданную политику расширенной защиты.The authentication process uses the specified extended protection policy.

AuthenticateAsServer(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by servers to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера, параметры проверки подлинности и политику расширенной защиты.The authentication process uses the specified server credentials, authentication options, and extended protection policy.

AuthenticateAsServer(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в соединении клиент-сервер.Called by servers to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified server credentials and authentication options.

AuthenticateAsServerAsync()

Вызывается серверами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by servers to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation.

AuthenticateAsServerAsync(ExtendedProtectionPolicy)

Вызывается серверами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by servers to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданную политику расширенной защиты.The authentication process uses the specified extended protection policy.

AuthenticateAsServerAsync(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by servers to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные сервера, параметры проверки подлинности и политику расширенной защиты.The authentication process uses the specified server credentials, authentication options, and extended protection policy.

AuthenticateAsServerAsync(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами аутентификации клиента, и, при необходимости, сервера в соединении клиент-сервер как асинхронная операция.Called by servers to authenticate the client, and optionally the server, in a client-server connection as an asynchronous operation. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified server credentials and authentication options.

BeginAuthenticateAsClient(AsyncCallback, Object)

Вызывается клиентами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by clients to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Этот метод не блокируется.This method does not block.

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

Вызывается клиентами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by clients to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные и привязку канала.The authentication process uses the specified credentials and channel binding. Этот метод не блокируется.This method does not block.

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

Вызывается клиентами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by clients to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные, параметры проверки подлинности и привязку канала.The authentication process uses the specified credentials, authentication options, and channel binding. Этот метод не блокируется.This method does not block.

BeginAuthenticateAsClient(NetworkCredential, String, AsyncCallback, Object)

Вызывается клиентами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by clients to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные.The authentication process uses the specified credentials. Этот метод не блокируется.This method does not block.

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

Вызывается клиентами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by clients to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified credentials and authentication options. Этот метод не блокируется.This method does not block.

BeginAuthenticateAsServer(AsyncCallback, Object)

Вызывается серверами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by servers to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Этот метод не блокируется.This method does not block.

BeginAuthenticateAsServer(ExtendedProtectionPolicy, AsyncCallback, Object)

Вызывается серверами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by servers to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданную политику расширенной защиты.The authentication process uses the specified extended protection policy. Этот метод не блокируется.This method does not block.

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

Вызывается серверами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by servers to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера, параметры проверки подлинности и политику расширенной защиты.The authentication process uses the specified server credentials, authentication options, and extended protection policy. Этот метод не блокируется.This method does not block.

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

Вызывается серверами для начала асинхронной операции проверки подлинности клиента, и, при необходимости, сервера в соединении клиент-сервер.Called by servers to begin an asynchronous operation to authenticate the client, and optionally the server, in a client-server connection. Процесс проверки подлинности использует заданные учетные данные сервера и параметры проверки подлинности.The authentication process uses the specified server credentials and authentication options. Этот метод не блокируется.This method does not block.

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

Начинает асинхронную операцию чтения, которая считывает данные из потока и сохраняет их в заданном массиве.Begins an asynchronous read operation that reads data from the stream and stores it in the specified array.

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

Начинает асинхронную операцию записи, которая записывает байты (Byte) из указанного буфера в поток.Begins an asynchronous write operation that writes Bytes from the specified buffer to the stream.

Close()

Закрывает текущий поток и отключает все ресурсы (например, сокеты и файловые дескрипторы), связанные с текущим потоком.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Вместо вызова данного метода, убедитесь в том, что поток надлежащим образом ликвидирован.Instead of calling this method, ensure that the stream is properly disposed.

(Унаследовано от Stream)
CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток.Reads the bytes from the current stream and writes them to another stream.

(Унаследовано от Stream)
CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Унаследовано от Stream)
CopyToAsync(Stream)

Асинхронно считывает байты из текущего потока и записывает их в другой поток.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Унаследовано от Stream)
CopyToAsync(Stream, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Унаследовано от Stream)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()

Выделяет объект WaitHandle.Allocates a WaitHandle object.

(Унаследовано от Stream)
Dispose()

Освобождает все ресурсы, занятые модулем Stream.Releases all resources used by the Stream.

(Унаследовано от Stream)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом NegotiateStream, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the NegotiateStream and optionally releases the managed resources.

DisposeAsync()

Асинхронно освобождает неуправляемые и управляемые ресурсы, используемые классом NegotiateStream.Asynchronously releases the unmanaged and managed resources used by the NegotiateStream.

EndAuthenticateAsClient(IAsyncResult)

Завершает находящуюся в состоянии ожидания асинхронную операцию проверки подлинности клиента, которая была до этого запущена вызовом метода BeginAuthenticateAsClient.Ends a pending asynchronous client authentication operation that was started with a call to BeginAuthenticateAsClient.

EndAuthenticateAsServer(IAsyncResult)

Завершает находящуюся в состоянии ожидания асинхронную операцию проверки подлинности клиента, которая была до этого запущена вызовом метода BeginAuthenticateAsServer.Ends a pending asynchronous client authentication operation that was started with a call to BeginAuthenticateAsServer.

EndRead(IAsyncResult)

Заканчивает асинхронную операцию чтения, запущенную до этого вызовом метода BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).Ends an asynchronous read operation that was started with a call to BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

EndWrite(IAsyncResult)

Заканчивает асинхронную операцию чтения, запущенную до этого вызовом метода BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).Ends an asynchronous write operation that was started with a call to BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
Flush()

Принудительно записывает все буферизированные данные в базовое устройство.Causes any buffered data to be written to the underlying device.

FlushAsync()

Асинхронно очищает все буферы для этого потока и вызывает запись всех буферизованных данных в базовое устройство.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Унаследовано от Stream)
FlushAsync(CancellationToken)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()

Обеспечивает поддержку для Contract.Provides support for a Contract.

(Унаследовано от Stream)
Read(Byte[], Int32, Int32)

Считывает данные из этого потока и сохраняет их в заданном массиве.Reads data from this stream and stores it in the specified array.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает позицию в потоке на число считанных байтов.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Унаследовано от Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Унаследовано от Stream)
ReadByte()

Считывает байт из потока и перемещает позицию в потоке на один байт или возвращает -1, если достигнут конец потока.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(Унаследовано от Stream)
Seek(Int64, SeekOrigin)

Выдает исключение NotSupportedException.Throws NotSupportedException.

SetLength(Int64)

Задает длину данных в базовом потоке.Sets the length of the underlying stream.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
Write(Byte[], Int32, Int32)

Записывает указанное количество элементов Byte в базовый поток, используя заданный буфер (параметр buffer) и начальное расположение (параметр offset).Write the specified number of Bytes to the underlying stream using the specified buffer and offset.

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в нем вперед на число записанных байтов.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32)

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию внутри потока на число записанных байтов.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Унаследовано от Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Унаследовано от Stream)
WriteByte(Byte)

Записывает байт в текущее положение в потоке и перемещает позицию в потоке вперед на один байт.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Унаследовано от Stream)

Явные реализации интерфейса

IDisposable.Dispose()

Освобождает все ресурсы, занятые модулем Stream.Releases all resources used by the Stream.

(Унаследовано от Stream)

Применяется к

Дополнительно