Freigeben über


NegotiateStream Klasse

Definition

Stellt einen Datenstrom bereit, der das Negotiate-Sicherheitsprotokoll verwendet, um den Client und optional den Server in der Clientserverkommunikation zu authentifizieren.

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
Vererbung
Vererbung
Attribute

Beispiele

Das folgende Beispiel veranschaulicht die Clientseite einer Clientserververbindung, die die NegotiateStream. Der Client authentifiziert und sendet asynchron eine Nachricht an den Server.

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

Im folgenden Codebeispiel wird die Serverseite einer Clientserververbindung veranschaulicht, die die NegotiateStream Authentifizierung des Clients verwendet und eine vom Client gesendete Nachricht lesen kann.

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

Hinweise

Verwenden Sie die Klasse für die NegotiateStream Authentifizierung und helfen Sie dabei, informationen zu sichern, die zwischen einem Client und einem Server übertragen werden. Mit NegotiateStream können Sie Folgendes tun.

  • Senden Sie die Anmeldeinformationen des Clients an den Server für Identitätswechsel oder Delegierung.
  • Anfordern der Serverauthentifizierung.
  • Verschlüsseln und/oder signieren Sie Daten, bevor Sie sie übertragen.

Die Authentifizierung muss vor der Übermittlung von Informationen durchgeführt werden. Clients fordern die Authentifizierung über synchrone AuthenticateAsClient-Methoden an, die den Ablauf blockieren, bis die Authentifizierung abgeschlossen ist, oder über asynchrone BeginAuthenticateAsClient-Methoden, die nicht blockieren, während sie auf den Abschluss der Authentifizierung warten. Server fordern die Authentifizierung mithilfe der synchronen oder asynchronen AuthenticateAsServerBeginAuthenticateAsServer Methoden an. Der Client und optional der Server werden mithilfe des Negotiate-Sicherheitsprotokolls authentifiziert. Das Kerberos-Protokoll wird für die Authentifizierung verwendet, wenn client- und serverseitig unterstützt werden. andernfalls wird NTLM verwendet. Die NegotiateStream Klasse führt die Authentifizierung mithilfe der SSPI (Security Support Provider Interface) durch.

Wenn die Authentifizierung erfolgreich ist, müssen Sie die IsEncrypted Und-Eigenschaften IsSigned überprüfen, um zu bestimmen, welche Sicherheitsdienste von der Daten während der NegotiateStream Übertragung verwendet werden. Überprüfen Sie die IsMutuallyAuthenticated Eigenschaft, um zu ermitteln, ob die gegenseitige Authentifizierung aufgetreten ist. Mithilfe der RemoteIdentity Eigenschaft können Sie Informationen zum Remoteclient oder -server abrufen.

Wenn die Authentifizierung fehlschlägt, erhalten Sie eine AuthenticationException oder eine InvalidCredentialException. In diesem Fall können Sie die Authentifizierung mit anderen Anmeldeinformationen wiederholen.

Sie senden Daten mithilfe der synchronen oder asynchronen WriteBeginWrite Oder WriteAsync Methoden. Sie empfangen Daten mithilfe der synchronen Read oder asynchronen ReadAsync Oder BeginRead Methoden. Wenn Sicherheitsdienste wie Verschlüsselung oder Signatur aktiviert sind, werden diese automatisch von der NegotiateStream.

Die NegotiateStream Daten werden mithilfe eines Datenstroms übertragen, den Sie beim Erstellen des NegotiateStreamDatenstroms angeben. Wenn Sie diesen zugrunde liegenden Datenstrom angeben, können Sie angeben, ob das Schließen des NegotiateStream zugrunde liegenden Datenstroms ebenfalls geschlossen wird.

Konstruktoren

Name Beschreibung
NegotiateStream(Stream, Boolean)

Initialisiert eine neue Instanz der NegotiateStream Klasse mithilfe des angegebenen Stream Und Datenstromschließverhaltens.

NegotiateStream(Stream)

Initialisiert eine neue Instanz der Klasse mithilfe des NegotiateStream angegebenen Stream.

Eigenschaften

Name Beschreibung
CanRead

Ruft einen Boolean Wert ab, der angibt, ob der zugrunde liegende Datenstrom lesbar ist.

CanSeek

Ruft einen Boolean Wert ab, der angibt, ob der zugrunde liegende Datenstrom suchbar ist.

CanTimeout

Ruft einen Boolean Wert ab, der angibt, ob der zugrunde liegende Datenstrom Timeouts unterstützt.

CanWrite

Ruft einen Boolean Wert ab, der angibt, ob der zugrunde liegende Datenstrom schreibbar ist.

ImpersonationLevel

Ruft einen Wert ab, der angibt, wie der Server die Anmeldeinformationen des Clients verwenden kann.

InnerStream

Ruft den datenstrom ab, der von diesem AuthenticatedStream zum Senden und Empfangen von Daten verwendet wird.

(Geerbt von AuthenticatedStream)
IsAuthenticated

Ruft einen Boolean Wert ab, der angibt, ob die Authentifizierung erfolgreich war.

IsEncrypted

Ruft einen Boolean Wert ab, der angibt, ob diese NegotiateStream Datenverschlüsselung verwendet.

IsMutuallyAuthenticated

Ruft einen Boolean Wert ab, der angibt, ob sowohl der Server als auch der Client authentifiziert wurden.

IsServer

Ruft einen Boolean Wert ab, der angibt, ob die lokale Seite der von dieser NegotiateStream Verbindung verwendeten Verbindung als Server authentifiziert wurde.

IsSigned

Ruft einen Boolean Wert ab, der angibt, ob die mit diesem Datenstrom gesendeten Daten signiert sind.

LeaveInnerStreamOpen

Ruft ab, ob der von diesem AuthenticatedStream zum Senden und Empfangen von Daten verwendete Daten offen gelassen wurde.

(Geerbt von AuthenticatedStream)
Length

Ruft die Länge des zugrunde liegenden Datenstroms ab.

Position

Ruft die aktuelle Position im zugrunde liegenden Datenstrom ab oder legt sie fest.

ReadTimeout

Ruft ab oder legt fest, wie lange ein Lesevorgang auf Daten wartet.

RemoteIdentity

Ruft Informationen zur Identität der Remotepartei ab, die diesen authentifizierten Datenstrom freigibt.

WriteTimeout

Ruft ab oder legt fest, wie lange ein Schreibvorgang auf Daten wartet.

Methoden

Name Beschreibung
AuthenticateAsClient()

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren.

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

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen, Authentifizierungsoptionen und Kanalbindung.

AuthenticateAsClient(NetworkCredential, ChannelBinding, String)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Clientanmeldeinformationen und die Kanalbindung.

AuthenticateAsClient(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen und Authentifizierungsoptionen.

AuthenticateAsClient(NetworkCredential, String)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Clientanmeldeinformationen.

AuthenticateAsClientAsync()

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren.

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

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen, Authentifizierungsoptionen und Kanalbindung.

AuthenticateAsClientAsync(NetworkCredential, ChannelBinding, String)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Clientanmeldeinformationen und die Kanalbindung.

AuthenticateAsClientAsync(NetworkCredential, String, ProtectionLevel, TokenImpersonationLevel)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen und Authentifizierungsoptionen.

AuthenticateAsClientAsync(NetworkCredential, String)

Wird von Clients aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Clientanmeldeinformationen.

AuthenticateAsServer()

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren.

AuthenticateAsServer(ExtendedProtectionPolicy)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebene erweiterte Schutzrichtlinie.

AuthenticateAsServer(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen, Authentifizierungsoptionen und erweiterte Schutzrichtlinie.

AuthenticateAsServer(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen und Authentifizierungsoptionen.

AuthenticateAsServerAsync()

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren.

AuthenticateAsServerAsync(ExtendedProtectionPolicy)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebene erweiterte Schutzrichtlinie.

AuthenticateAsServerAsync(NetworkCredential, ExtendedProtectionPolicy, ProtectionLevel, TokenImpersonationLevel)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen, Authentifizierungsoptionen und erweiterte Schutzrichtlinie.

AuthenticateAsServerAsync(NetworkCredential, ProtectionLevel, TokenImpersonationLevel)

Wird von Servern aufgerufen, um den Client und optional den Server in einer Clientserververbindung als asynchronen Vorgang zu authentifizieren. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen und Authentifizierungsoptionen.

BeginAuthenticateAsClient(AsyncCallback, Object)

Wird von Clients aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Diese Methode blockiert nicht.

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

Wird von Clients aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen und die Kanalbindung. Diese Methode blockiert nicht.

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

Wird von Clients aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen, Authentifizierungsoptionen und Kanalbindung. Diese Methode blockiert nicht.

BeginAuthenticateAsClient(NetworkCredential, String, AsyncCallback, Object)

Wird von Clients aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen. Diese Methode blockiert nicht.

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

Wird von Clients aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Anmeldeinformationen und Authentifizierungsoptionen. Diese Methode blockiert nicht.

BeginAuthenticateAsServer(AsyncCallback, Object)

Wird von Servern aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Diese Methode blockiert nicht.

BeginAuthenticateAsServer(ExtendedProtectionPolicy, AsyncCallback, Object)

Wird von Servern aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebene erweiterte Schutzrichtlinie. Diese Methode blockiert nicht.

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

Wird von Servern aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen, Authentifizierungsoptionen und erweiterte Schutzrichtlinie. Diese Methode blockiert nicht.

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

Wird von Servern aufgerufen, um einen asynchronen Vorgang zur Authentifizierung des Clients und optional den Server in einer Clientserververbindung zu starten. Der Authentifizierungsprozess verwendet die angegebenen Serveranmeldeinformationen und Authentifizierungsoptionen. Diese Methode blockiert nicht.

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

Startet einen asynchronen Lesevorgang, der Daten aus dem Datenstrom liest und im angegebenen Array speichert.

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

Startet einen asynchronen ByteSchreibvorgang, der s aus dem angegebenen Puffer in den Datenstrom schreibt.

Close()

Schließt den aktuellen Datenstrom und gibt alle Ressourcen (z. B. Sockets und Dateihandles) frei, die dem aktuellen Datenstrom zugeordnet sind. Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Datenstrom ordnungsgemäß verworfen ist.

(Geerbt von Stream)
CopyTo(Stream, Int32)

Liest die Bytes aus dem aktuellen Datenstrom und schreibt sie mithilfe einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyTo(Stream)

Liest die Bytes aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Datenstrom und schreibt sie mithilfe eines angegebenen Abbruchtokens in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Liest asynchron die Bytes aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom, wobei eine angegebene Puffergröße und ein Abbruchtoken verwendet wird. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Datenstrom und schreibt sie mithilfe einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()
Veraltet.
Veraltet.
Veraltet.

Ordnet ein WaitHandle Objekt zu.

(Geerbt von Stream)
Dispose()

Veröffentlicht alle ressourcen, die von der Stream.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den NegotiateStream verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den AuthenticatedStream verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von AuthenticatedStream)
DisposeAsync()

Gibt asynchron die nicht verwalteten und verwalteten Ressourcen frei, die von der NegotiateStream.

EndAuthenticateAsClient(IAsyncResult)

Beendet einen ausstehenden asynchronen Clientauthentifizierungsvorgang, der mit einem Aufruf BeginAuthenticateAsClientvon .

EndAuthenticateAsServer(IAsyncResult)

Beendet einen ausstehenden asynchronen Clientauthentifizierungsvorgang, der mit einem Aufruf BeginAuthenticateAsServervon .

EndRead(IAsyncResult)

Beendet einen asynchronen Lesevorgang, der mit einem Aufruf BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)von .

EndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang, der mit einem Aufruf BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)von .

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
Flush()

Bewirkt, dass alle gepufferten Daten auf das zugrunde liegende Gerät geschrieben werden.

FlushAsync()

Löscht asynchron alle Puffer für diesen Datenstrom und bewirkt, dass alle gepufferten Daten auf das zugrunde liegende Gerät geschrieben werden.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Schreibt asynchron alle gepufferten Daten auf das zugrunde liegende Gerät.

FlushAsync(CancellationToken)

Löscht asynchron alle Puffer für diesen Datenstrom, bewirkt, dass alle gepufferten Daten auf das zugrunde liegende Gerät geschrieben werden, und überwacht Abbruchanforderungen.

(Geerbt von Stream)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
ObjectInvariant()
Veraltet.

Bietet Unterstützung für ein Contract.

(Geerbt von Stream)
Read(Byte[], Int32, Int32)

Liest Daten aus diesem Datenstrom und speichert sie im angegebenen Array.

Read(Span<Byte>)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, liest sie eine Bytesequenz aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest Daten asynchron aus diesem Datenstrom und speichert sie im angegebenen Array.

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

Liest asynchron eine Abfolge von Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32)

Liest asynchron eine Abfolge von Bytes aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Liest Daten asynchron aus dem NegotiateStream Speicherbereich und speichert sie als asynchronen Vorgang in einem Bytespeicherbereich.

ReadAsync(Memory<Byte>, CancellationToken)

Liest asynchron eine Abfolge von Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Liest mindestens eine Minimale Anzahl von Bytes aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Liest asynchron mindestens eine Mindestanzahl von Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadByte()

Liest ein Byte aus dem Datenstrom und wechselt die Position innerhalb des Datenstroms um ein Byte oder gibt -1 zurück, wenn am Ende des Datenstroms.

(Geerbt von Stream)
ReadExactly(Byte[], Int32, Int32)

Liest die Anzahl der Bytes aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms count .

(Geerbt von Stream)
ReadExactly(Span<Byte>)

Liest Bytes aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms, bis die buffer Daten gefüllt sind.

(Geerbt von Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Liest asynchron die Anzahl der Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms count und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Liest asynchron Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms, bis die buffer Daten gefüllt sind, und überwacht Abbruchanforderungen.

(Geerbt von Stream)
Seek(Int64, SeekOrigin)

Löst NotSupportedException aus.

SetLength(Int64)

Legt die Länge des zugrunde liegenden Datenstroms fest.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Write(Byte[], Int32, Int32)

Schreiben Sie die angegebene Anzahl von s mithilfe des Byteangegebenen Puffers und Offsets in den zugrunde liegenden Datenstrom.

Write(ReadOnlySpan<Byte>)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine Bytesequenz in den aktuellen Datenstrom geschrieben und die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes vorangestellt.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreiben Sie asynchron die angegebene Anzahl von Bytes in den zugrunde liegenden Datenstrom.

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

Schreibt asynchron eine Bytesequenz in den aktuellen Datenstrom, wechselt die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32)

Schreibt asynchron eine Bytesequenz in den aktuellen Datenstrom und wechselt die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes.

(Geerbt von Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Schreiben Sie asynchron die angegebene Anzahl von Bytes in den zugrunde liegenden Datenstrom.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Schreibt asynchron eine Bytesequenz in den aktuellen Datenstrom, wechselt die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteByte(Byte)

Schreibt ein Byte in die aktuelle Position im Datenstrom und wechselt die Position innerhalb des Datenstroms um ein Byte.

(Geerbt von Stream)

Erweiterungsmethoden

Name Beschreibung
ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguriert, wie auf die von einem asynchronen Einweg zurückgegebenen Aufgaben gewartet wird.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Liest die Bytes asynchron aus den Stream Und schreibt sie mithilfe eines Abbruchtokens in das angegebene PipeWriter.

Gilt für:

Weitere Informationen