SslApplicationProtocol 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 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)
- 繼承
- 實作
範例
下列程式代碼範例示範 上 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) 通訊協定識別碼。
建構函式
SslApplicationProtocol(Byte[]) |
初始化 SslApplicationProtocol 的新執行個體。 |
SslApplicationProtocol(String) |
初始化 SslApplicationProtocol 的新執行個體。 |
欄位
Http11 |
取得代表 HTTP/1.1 TLS 應用程式通訊協定的 SslApplicationProtocol。 |
Http2 |
取得代表 HTTP/2 TLS 應用程式通訊協定的 SslApplicationProtocol。 |
Http3 |
定義 SslApplicationProtocol HTTP 3.0 的實例。 |
屬性
Protocol |
取得此 SslApplicationProtocol 所代表的目前 TLS 應用程式通訊協定。 |
方法
Equals(Object) |
將 SslApplicationProtocol 與指定的物件相比較。 |
Equals(SslApplicationProtocol) |
比較 SslApplicationProtocol 和指定的 SslApplicationProtocol 執行個體。 |
GetHashCode() |
傳回 SslApplicationProtocol 執行個體的雜湊程式碼。 |
ToString() |
覆寫 ToString() 方法。 |
運算子
Equality(SslApplicationProtocol, SslApplicationProtocol) |
用來比較兩個 SslApplicationProtocol 物件的等號比較運算子。 |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
用來比較兩個 SslApplicationProtocol 物件的不等比較運算子。 |