Поделиться через


NegotiateStream Класс

Определение

Предоставляет поток, использующий протокол безопасности "Согласование" для проверки подлинности клиента и при необходимости сервера в обмен данными с клиентским сервером.

public ref class NegotiateStream : System::Net::Security::AuthenticatedStream
public class NegotiateStream : System.Net.Security.AuthenticatedStream
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public class NegotiateStream : System.Net.Security.AuthenticatedStream
type NegotiateStream = class
    inherit AuthenticatedStream
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
type NegotiateStream = class
    inherit AuthenticatedStream
Public Class NegotiateStream
Inherits AuthenticatedStream
Наследование
Наследование
Атрибуты

Примеры

В следующем примере показана клиентская сторона подключения к клиентскому серверу, использующего сервер NegotiateStream. Клиент выполняет проверку подлинности и отправляет сообщение серверу асинхронно.

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

В следующем примере кода демонстрируется серверная сторона подключения клиента-сервера, которая используется NegotiateStream для проверки подлинности клиента и считывает сообщение, отправленное клиентом.

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

Комментарии

NegotiateStream Используйте класс для проверки подлинности и для защиты информации, передаваемой между клиентом и сервером. С помощью NegotiateStreamэтого метода можно выполнить следующие действия.

  • Отправьте учетные данные клиента на сервер для олицетворения или делегирования.
  • Запрос проверки подлинности сервера.
  • Перед передачей шифруйте и(или) подписывание данных.

Перед передачей информации необходимо выполнить проверку подлинности. Клиенты запрашивают проверку подлинности с помощью синхронных методов, которые блокируются до завершения проверки подлинности или асинхронных AuthenticateAsClientBeginAuthenticateAsClient методов, которые не блокируются при ожидании завершения проверки подлинности. Серверы запрашивают проверку подлинности с помощью синхронных AuthenticateAsServer или асинхронных BeginAuthenticateAsServer методов. Клиент и при необходимости сервер проходят проверку подлинности с помощью протокола безопасности "Согласование". Протокол Kerberos используется для проверки подлинности, если он поддерживается как клиентом, так и сервером; в противном случае используется NTLM. Класс NegotiateStream выполняет проверку подлинности с помощью интерфейса поставщика поддержки безопасности (SSPI).

При успешной проверке подлинности необходимо проверить IsEncrypted и IsSigned свойства, чтобы определить, какие службы безопасности будут использоваться NegotiateStream для защиты данных во время передачи. IsMutuallyAuthenticated Проверьте свойство, чтобы определить, произошла ли взаимная проверка подлинности. Вы можете получить сведения о удаленном клиенте или сервере RemoteIdentity с помощью свойства.

Если проверка подлинности завершается ошибкойAuthenticationException, вы получите или .InvalidCredentialException В этом случае можно повторить проверку подлинности с помощью других учетных данных.

Данные отправляются с помощью синхронных или асинхронных WriteBeginWrite или WriteAsync методов. Вы получаете данные с помощью синхронных или асинхронных ReadReadAsync или BeginRead методов. Если службы безопасности, такие как шифрование или подписывание, включены, они автоматически применяются к данным NegotiateStream.

Передает NegotiateStream данные с помощью потока, который вы предоставляете при создании NegotiateStream. При предоставлении базового потока можно указать, закрывается ли закрытие NegotiateStream базового потока.

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

Имя Описание
NegotiateStream(Stream, Boolean)

Инициализирует новый экземпляр класса с помощью указанного NegotiateStreamStream и режима закрытия потока.

NegotiateStream(Stream)

Инициализирует новый экземпляр класса с помощью указанного NegotiateStreamStream.

Свойства

Имя Описание
CanRead

Boolean Возвращает значение, указывающее, доступен ли базовый поток для чтения.

CanSeek

Boolean Возвращает значение, указывающее, можно ли искать базовый поток.

CanTimeout

Возвращает значение, указывающее, поддерживает ли базовый Boolean поток время ожидания.

CanWrite

Boolean Возвращает значение, указывающее, является ли базовый поток записываемым.

ImpersonationLevel

Возвращает значение, указывающее, как сервер может использовать учетные данные клиента.

InnerStream

Получает поток, используемый этим AuthenticatedStream для отправки и получения данных.

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

Boolean Возвращает значение, указывающее, выполнена ли проверка подлинности успешно.

IsEncrypted

Boolean Возвращает значение, указывающее, используется ли шифрование NegotiateStream данных.

IsMutuallyAuthenticated

Boolean Возвращает значение, указывающее, прошел ли проверка подлинности как сервер, так и клиент.

IsServer

Boolean Возвращает значение, указывающее, была ли локальная сторона подключения, используемая этим NegotiateStream подключением, прошла проверку подлинности в качестве сервера.

IsSigned

Boolean Возвращает значение, указывающее, подписаны ли данные, отправленные с помощью этого потока.

LeaveInnerStreamOpen

Возвращает, остается ли поток, используемый этим AuthenticatedStream для отправки и получения данных.

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

Возвращает длину базового потока.

Position

Возвращает или задает текущую позицию в базовом потоке.

ReadTimeout

Возвращает или задает время, когда блоки операций чтения ожидают данных.

RemoteIdentity

Получает сведения об удостоверении удаленной стороны, совместном доступе к этому потоку с проверкой подлинности.

WriteTimeout

Возвращает или задает время, когда блоки операций записи ожидают данных.

Методы

Имя Описание
AuthenticateAsClient()

Вызывается клиентами для проверки подлинности клиента и при необходимости сервера в подключении к клиентскому серверу.

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

Вызывается клиентами для проверки подлинности клиента и при необходимости сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные, параметры проверки подлинности и привязка канала.

AuthenticateAsClient(NetworkCredential, ChannelBinding, String)

Вызывается клиентами для проверки подлинности клиента и при необходимости сервера в подключении к клиентскому серверу. Процесс проверки подлинности использует указанные учетные данные клиента и привязку канала.

AuthenticateAsClient(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Вызывается клиентами для проверки подлинности клиента и при необходимости сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные и параметры проверки подлинности.

AuthenticateAsClient(NetworkCredential, String)

Вызывается клиентами для проверки подлинности клиента и при необходимости сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные клиента.

AuthenticateAsClientAsync()

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции.

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

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. В процессе проверки подлинности используются указанные учетные данные, параметры проверки подлинности и привязка канала.

AuthenticateAsClientAsync(NetworkCredential, ChannelBinding, String)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. Процесс проверки подлинности использует указанные учетные данные клиента и привязку канала.

AuthenticateAsClientAsync(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. В процессе проверки подлинности используются указанные учетные данные и параметры проверки подлинности.

AuthenticateAsClientAsync(NetworkCredential, String)

Вызывается клиентами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. В процессе проверки подлинности используются указанные учетные данные клиента.

AuthenticateAsServer()

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу.

AuthenticateAsServer(ExtendedProtectionPolicy)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. Процесс проверки подлинности использует указанную расширенную политику защиты.

AuthenticateAsServer(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные сервера, параметры проверки подлинности и расширенная политика защиты.

AuthenticateAsServer(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные сервера и параметры проверки подлинности.

AuthenticateAsServerAsync()

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции.

AuthenticateAsServerAsync(ExtendedProtectionPolicy)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. Процесс проверки подлинности использует указанную расширенную политику защиты.

AuthenticateAsServerAsync(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. В процессе проверки подлинности используются указанные учетные данные сервера, параметры проверки подлинности и расширенная политика защиты.

AuthenticateAsServerAsync(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Вызывается серверами для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу в качестве асинхронной операции. В процессе проверки подлинности используются указанные учетные данные сервера и параметры проверки подлинности.

BeginAuthenticateAsClient(AsyncCallback, Object)

Вызывается клиентами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. Этот метод не блокируется.

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

Вызывается клиентами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. Процесс проверки подлинности использует указанные учетные данные и привязку канала. Этот метод не блокируется.

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

Вызывается клиентами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные, параметры проверки подлинности и привязка канала. Этот метод не блокируется.

BeginAuthenticateAsClient(NetworkCredential, String, AsyncCallback, Object)

Вызывается клиентами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные. Этот метод не блокируется.

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

Вызывается клиентами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные и параметры проверки подлинности. Этот метод не блокируется.

BeginAuthenticateAsServer(AsyncCallback, Object)

Вызывается серверами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. Этот метод не блокируется.

BeginAuthenticateAsServer(ExtendedProtectionPolicy, AsyncCallback, Object)

Вызывается серверами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. Процесс проверки подлинности использует указанную расширенную политику защиты. Этот метод не блокируется.

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

Вызывается серверами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные сервера, параметры проверки подлинности и расширенная политика защиты. Этот метод не блокируется.

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

Вызывается серверами, чтобы начать асинхронную операцию для проверки подлинности клиента и, при необходимости, сервера в подключении к клиентскому серверу. В процессе проверки подлинности используются указанные учетные данные сервера и параметры проверки подлинности. Этот метод не блокируется.

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

Начинает асинхронную операцию чтения, которая считывает данные из потока и сохраняет ее в указанном массиве.

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

Начинает асинхронную операцию записи, которая записывает Byteданные из указанного буфера в поток.

Close()

Закрывает текущий поток и освобождает все ресурсы (например, сокеты и дескрипторы файлов), связанные с текущим потоком. Вместо вызова этого метода убедитесь, что поток правильно удален.

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

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

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

Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток с помощью указанного маркера отмены. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и маркер отмены. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

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

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()
Устаревшие..
Устаревшие..
Устаревшие..

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

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

Освобождает все ресурсы, используемые параметром Stream.

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

Освобождает неуправляемые ресурсы, используемые NegotiateStream и при необходимости освобождает управляемые ресурсы.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые AuthenticatedStream и при необходимости освобождает управляемые ресурсы.

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

Асинхронно освобождает неуправляемые и управляемые ресурсы, используемые в .NegotiateStream

EndAuthenticateAsClient(IAsyncResult)

Завершает ожидающую асинхронную операцию проверки подлинности клиента, которая была запущена с вызовом BeginAuthenticateAsClient.

EndAuthenticateAsServer(IAsyncResult)

Завершает ожидающую асинхронную операцию проверки подлинности клиента, которая была запущена с вызовом BeginAuthenticateAsServer.

EndRead(IAsyncResult)

Завершает асинхронную операцию чтения, которая была запущена с вызовом BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

EndWrite(IAsyncResult)

Завершает асинхронную операцию записи, которая была запущена с вызовом BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

Вызывает запись буферных данных на базовое устройство.

FlushAsync()

Асинхронно очищает все буферы для этого потока и приводит к записи всех буферных данных на базовое устройство.

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

Асинхронно записывает все буферированные данные на базовое устройство.

FlushAsync(CancellationToken)

Асинхронно очищает все буферы для этого потока, приводит к записи всех буферных данных на базовое устройство и отслеживает запросы на отмену.

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

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

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

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

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

Создает неглубокую копию текущей Object.

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

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()
Устаревшие..

Предоставляет поддержку Contractдля .

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

Считывает данные из этого потока и сохраняет его в указанном массиве.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

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

Асинхронно считывает данные из этого потока и сохраняет его в указанном массиве.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

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

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов.

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

Асинхронно считывает данные из NegotiateStream диапазона памяти байтов и сохраняет их в виде асинхронной операции.

ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Считывает по крайней мере минимальное количество байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

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

Асинхронно считывает по крайней мере минимальное количество байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

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

Считывает байт из потока и перемещает позицию в потоке по одному байту или возвращает -1, если в конце потока.

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

Считывает количество байтов из текущего потока и перемещает count положение в потоке.

(Унаследовано от Stream)
ReadExactly(Span<Byte>)

Считывает байты из текущего потока и перемещает положение в потоке, пока не будет заполнено buffer .

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

Асинхронно считывает количество байтов из текущего потока, перемещает count положение в потоке и отслеживает запросы на отмену.

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

Асинхронно считывает байты из текущего потока, перемещает положение в потоке до тех пор, пока не buffer будет заполнено, и отслеживает запросы на отмену.

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

Бросает NotSupportedException.

SetLength(Int64)

Задает длину базового потока.

ToString()

Возвращает строку, представляющую текущий объект.

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

Запишите указанное число s в Byteбазовый поток с помощью указанного буфера и смещения.

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

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

Асинхронно записывает указанное число Bytes в базовый поток.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

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

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

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

Асинхронно записывает указанное число Bytes в базовый поток.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

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

Записывает байт в текущую позицию в потоке и перемещает позицию в потоке по одному байту.

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

Методы расширения

Имя Описание
ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Асинхронно считывает байты из Stream указанных и записывает их в указанный PipeWriterмаркер отмены.

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

См. также раздел