Bagikan melalui


SslApplicationProtocol Struktur

Definisi

Mewakili nilai protokol Aplikasi 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)
Warisan
SslApplicationProtocol
Penerapan

Contoh

Contoh kode berikut menunjukkan negosiasi protokol tingkat aplikasi pada SslStream. Server mengiklankan dukungan untuk protocol1 dan protocol2. Klien mengiklankan dukungan untuk protocol2 dan protocol3. Protokol yang umum didukung (protocol2) akan dinegosiasikan selama jabat tangan.

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

Keterangan

Jenis ini berisi bidang statis dengan nilai yang telah SslApplicationProtocol ditentukan sebelumnya untuk versi HTTP.

Selama jabat tangan, klien mengirim daftar protokol ALPN yang tersedia dan server memilih kecocokan terbaik dari daftar itu.

Untuk daftar lengkap protokol yang didukung, lihat ID Protokol TLS Application-Layer Protocol Negotiation (ALPN).

Konstruktor

SslApplicationProtocol(Byte[])

Menginisialisasi instans baru dari SslApplicationProtocol.

SslApplicationProtocol(String)

Menginisialisasi instans baru dari SslApplicationProtocol.

Bidang

Http11

Mendapatkan protokol aplikasi HTTP/1.1 TLS yang SslApplicationProtocol mewakili.

Http2

Mendapatkan protokol aplikasi HTTP/2 TLS yang SslApplicationProtocol mewakili.

Http3

Menentukan instans SslApplicationProtocol untuk HTTP 3.0.

Properti

Protocol

Mendapatkan protokol aplikasi TLS saat ini yang diwakili oleh ini SslApplicationProtocol.

Metode

Equals(Object)

Membandingkan SslApplicationProtocol dengan objek yang ditentukan.

Equals(SslApplicationProtocol)

Membandingkan dengan SslApplicationProtocol instans yang ditentukan SslApplicationProtocol .

GetHashCode()

Mengembalikan kode hash untuk SslApplicationProtocol instans.

ToString()

Mengambil alih ToString() metode .

Operator

Equality(SslApplicationProtocol, SslApplicationProtocol)

Operator kesetaraan untuk membandingkan dua SslApplicationProtocol objek.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

Operator ketidaksamaan untuk membandingkan dua SslApplicationProtocol objek.

Berlaku untuk