SslApplicationProtocol Структура

Определение

Представляет значение протокола приложения 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)
Наследование
SslApplicationProtocol
Реализации

Примеры

В следующем примере кода демонстрируется согласование протокола SslStreamна уровне приложения. Сервер объявляет поддержку protocol1 и protocol2. Клиент объявляет поддержку protocol2 и protocol3. Часто поддерживаемый протокол (protocol2) согласовывается во время подтверждения.

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

Комментарии

Этот тип содержит статические поля с предопределенными SslApplicationProtocol значениями для версий HTTP.

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

Полный список поддерживаемых протоколов см. в разделе протоколов TLS Application-Layer протоколов (ALPN).

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

Имя Описание
SslApplicationProtocol(Byte[])

Инициализирует новый экземпляр SslApplicationProtocolобъекта .

SslApplicationProtocol(String)

Инициализирует новый экземпляр SslApplicationProtocolобъекта .

Поля

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

SslApplicationProtocol Возвращает представляющий протокол приложения TLS HTTP/1.1.

Http2

SslApplicationProtocol Возвращает представляющий протокол приложения TLS HTTP/2.

Http3

Определяет SslApplicationProtocol экземпляр для HTTP 3.0.

Свойства

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

Возвращает текущий протокол приложения TLS, представленный этим SslApplicationProtocolпротоколом.

Методы

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

Сравнивает заданный SslApplicationProtocol объект.

Equals(SslApplicationProtocol)

Сравнивает экземпляр SslApplicationProtocol с указанным SslApplicationProtocol экземпляром.

GetHashCode()

Возвращает хэш-код для экземпляра SslApplicationProtocol .

ToString()

Переопределяет ToString() метод.

Операторы

Имя Описание
Equality(SslApplicationProtocol, SslApplicationProtocol)

Оператор равенства для сравнения двух SslApplicationProtocol объектов.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

Оператор неравенства для сравнения двух SslApplicationProtocol объектов.

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