다음을 통해 공유


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의 협상을 보여 줍니다. 서버는 및 protocol2에 대한 protocol1 지원을 보급합니다. 클라이언트는 및 protocol3에 대한 protocol2 지원을 보급합니다. 일반적으로 지원되는 프로토콜(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

설명

이 형식에는 HTTP 버전에 대해 미리 정의된 SslApplicationProtocol 값이 있는 정적 필드가 포함되어 있습니다.

핸드셰이크 중에 클라이언트는 사용 가능한 ALPN 프로토콜 목록을 보내고 서버는 해당 목록에서 가장 일치하는 항목을 선택합니다.

지원되는 프로토콜의 전체 목록은 TLS Application-Layer ALPN(프로토콜 협상) 프로토콜 ID를 참조하세요.

생성자

SslApplicationProtocol(Byte[])

SslApplicationProtocol의 새 인스턴스를 초기화합니다.

SslApplicationProtocol(String)

SslApplicationProtocol의 새 인스턴스를 초기화합니다.

필드

Http11

HTTP/1.1 TLS 애플리케이션 프로토콜을 나타내는 SslApplicationProtocol을 가져옵니다.

Http2

HTTP/2 TLS 애플리케이션 프로토콜을 나타내는 SslApplicationProtocol을 가져옵니다.

Http3

HTTP 3.0에 대한 instance 정의합니다 SslApplicationProtocol .

속성

Protocol

SslApplicationProtocol에서 나타내는 최신 TLS 애플리케이션 프로토콜을 가져옵니다.

메서드

Equals(Object)

SslApplicationProtocol을 지정된 개체와 비교합니다.

Equals(SslApplicationProtocol)

SslApplicationProtocol를 지정된 SslApplicationProtocol 인스턴스와 비교합니다.

GetHashCode()

SslApplicationProtocol 인스턴스에 대한 해시 코드를 반환합니다.

ToString()

ToString() 메서드를 재정의합니다.

연산자

Equality(SslApplicationProtocol, SslApplicationProtocol)

SslApplicationProtocol 개체를 비교하기 위한 같음 연산자입니다.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

SslApplicationProtocol 개체를 비교하기 위한 같지 않음 연산자입니다.

적용 대상