Compartir a través de


SslApplicationProtocol Estructura

Definición

Representa un valor del protocolo de aplicación TLS.

public value class SslApplicationProtocol : IEquatable<System::Net::Security::SslApplicationProtocol>
public readonly struct SslApplicationProtocol : IEquatable<System.Net.Security.SslApplicationProtocol>
type SslApplicationProtocol = struct
Public Structure SslApplicationProtocol
Implements IEquatable(Of SslApplicationProtocol)
Herencia
SslApplicationProtocol
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra la negociación del protocolo de nivel de aplicación en SslStream. El servidor anuncia la compatibilidad con protocol1 y protocol2. El cliente anuncia la compatibilidad con protocol2 y protocol3. El protocolo admitido normalmente (protocol2) se negocia durante el protocolo de enlace.

async Task Server(NetworkStream stream, X509Certificate2 serverCertificate)
{
    using var server = new SslStream(stream);

    await server.AuthenticateAsServerAsync(new SslServerAuthenticationOptions
    {
        ServerCertificate = serverCertificate,
        ApplicationProtocols = new()
        {
            new("protocol1"),
            new("protocol2"),
        }
    });

    string protocol = Encoding.ASCII.GetString(server.NegotiatedApplicationProtocol.Protocol.Span);
    System.Console.WriteLine($"Server - negotiated protocol: {protocol}");
}

async Task Client(NetworkStream stream, string hostName)
{
    using var client = new SslStream(stream);

    await client.AuthenticateAsClientAsync(new SslClientAuthenticationOptions
    {
        // the host name must match the name on the certificate used on the server side
        TargetHost = hostName,
        ApplicationProtocols = new()
        {
            new("protocol2"),
            new("protocol3")
        }
    });

    string protocol = Encoding.ASCII.GetString(client.NegotiatedApplicationProtocol.Protocol.Span);
    System.Console.WriteLine($"Client - negotiated protocol: {protocol}");
}

// possible output:
//   Server - negotiated protocol: protocol2
//   Client - negotiated protocol: protocol2
Async Function Server(stream As NetworkStream, serverCertificate As X509Certificate2) As Task
    Using serverStream As SslStream = new SslStream(stream)
        Dim options as New SslServerAuthenticationOptions() With
        {
            .ServerCertificate = serverCertificate,
            .ApplicationProtocols = New List(Of SslApplicationProtocol) From
            {
                New SslApplicationProtocol("protocol1"),
                New SslApplicationProtocol("protocol2")
            }
        }
        Await serverStream.AuthenticateAsServerAsync(options)

        Dim protocol As String = Encoding.ASCII.GetString(
            serverStream.NegotiatedApplicationProtocol.Protocol.Span)
        System.Console.WriteLine($"Server - negotiated protocol: {protocol}")
    End Using
End Function

Async Function Client(stream As NetworkStream, hostName As String ) As Task
    Using clientStream As SslStream = new SslStream(stream)
        Dim options as New SslClientAuthenticationOptions() With
        {
            .TargetHost = hostName,
            .ApplicationProtocols = New List(Of SslApplicationProtocol) From
            {
                New SslApplicationProtocol("protocol2"),
                New SslApplicationProtocol("protocol3")
            }
        }
        Await clientStream.AuthenticateAsClientAsync(options)

        Dim protocol As String = Encoding.ASCII.GetString(
            clientStream.NegotiatedApplicationProtocol.Protocol.Span)
        System.Console.WriteLine($"Client - negotiated protocol: {protocol}")
    End Using
End Function

' possible output:
'   Server - negotiated protocol: protocol2
'   Client - negotiated protocol: protocol2

Comentarios

Este tipo contiene campos estáticos con valores predefinidos SslApplicationProtocol para las versiones HTTP.

Durante el protocolo de enlace, el cliente envía una lista de protocolos ALPN disponibles y el servidor elige la mejor coincidencia de esa lista.

Para obtener una lista completa de los protocolos admitidos, consulte Identificadores de protocolo de negociación de protocolos (ALPN) de TLS Application-Layer.

Constructores

SslApplicationProtocol(Byte[])

Inicializa una nueva instancia de SslApplicationProtocol.

SslApplicationProtocol(String)

Inicializa una nueva instancia de SslApplicationProtocol.

Campos

Http11

Obtiene un objeto SslApplicationProtocol que representa el protocolo de aplicación TLS HTTP/1.1.

Http2

Obtiene un objeto SslApplicationProtocol que representa el protocolo de aplicación TLS HTTP/2.

Http3

Define una SslApplicationProtocol instancia para HTTP 3.0.

Propiedades

Protocol

Obtiene un protocolo de aplicación TLS actual representado por este objeto SslApplicationProtocol.

Métodos

Equals(Object)

Compara la colección SslApplicationProtocol con el objeto especificado.

Equals(SslApplicationProtocol)

Compara SslApplicationProtocol con la instancia de SslApplicationProtocol especificada.

GetHashCode()

Devuelve el código hash de la instancia de SslApplicationProtocol.

ToString()

Reemplaza el método ToString().

Operadores

Equality(SslApplicationProtocol, SslApplicationProtocol)

El operador de igualdad para comparar dos objetos SslApplicationProtocol.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

Operador de desigualdad para comparar dos objetos SslApplicationProtocol.

Se aplica a