Condividi tramite


SslApplicationProtocol Struct

Definizione

Rappresenta un valore del protocollo applicativo 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)
Ereditarietà
SslApplicationProtocol
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrata la negoziazione del protocollo a livello di applicazione in SslStream. Il server annuncia il supporto per protocol1 e protocol2. Il client annuncia il supporto per protocol2 e protocol3. Il protocollo comunemente supportato (protocol2) viene negoziato durante l'handshake.

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

Commenti

Questo tipo contiene campi statici con valori predefiniti SslApplicationProtocol per le versioni HTTP.

Durante l'handshake, il client invia un elenco di protocolli ALPN disponibili e il server sceglie la corrispondenza migliore da tale elenco.

Per un elenco completo dei protocolli supportati, vedere TLS Application-Layer Protocol Negotiation (ALPN).

Costruttori

SslApplicationProtocol(Byte[])

Inizializza una nuova istanza dell'oggetto SslApplicationProtocol.

SslApplicationProtocol(String)

Inizializza una nuova istanza dell'oggetto SslApplicationProtocol.

Campi

Http11

Ottiene un oggetto SslApplicationProtocol che rappresenta il protocollo applicativo TLS HTTP/1.1.

Http2

Ottiene un oggetto SslApplicationProtocol che rappresenta il protocollo applicativo TLS HTTP/2.

Http3

Definisce un'istanza SslApplicationProtocol per HTTP 3.0.

Proprietà

Protocol

Ottiene un protocollo applicativo TLS corrente rappresentato da questo SslApplicationProtocol.

Metodi

Equals(Object)

Confronta la classe SslApplicationProtocol con l'oggetto specificato.

Equals(SslApplicationProtocol)

Confronta un SslApplicationProtocol con l'istanza specificata di SslApplicationProtocol.

GetHashCode()

Restituisce il codice hash per l'istanza di SslApplicationProtocol.

ToString()

Esegue l'override del metodo ToString().

Operatori

Equality(SslApplicationProtocol, SslApplicationProtocol)

Operatore di uguaglianza per confrontare due oggetti SslApplicationProtocol.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

Operatore di disuguaglianza per confrontare due oggetti SslApplicationProtocol.

Si applica a