Quic基本上已經成了下一代互聯網基礎傳輸協議的既定標準了,雖然quic的標準還沒有完全定稿,但微軟已經推出了跨平臺的ms-quic實現了,在.net 7中會內置對MS Quic的封裝,不過由於.net 7得到2022年的11月份發佈,需要等上不少時間。昨天發現github上有人將.net 7中System.Net.Quic名字空間下部分實現給遷移到了.net 6下,便簡單的試了一下。
一、安裝Nuget包
首先我們需要安裝Nuget包,需要安裝如下兩個包:
-
Quic.NET
-
Microsoft.Native.Quic.MsQuic.OpenSSL (win11可以不安裝)
由於System.Net.Quic是的MSQuic的封裝,第二個包就是MsQuic的原生實現,win11已經內置了可以不安裝。對於linux,則需要安裝libmsquic。
二、簽發證書
Quic是強制需要TLS的,因此需要簽發證書,這裏就不詳述。
三、服務端代碼
var listener = new QuicListener(QuicImplementationProviders.MsQuic, endPoint, new SslServerAuthenticationOptions()
{
ApplicationProtocols = new
List<SslApplicationProtocol>() { new("quictest") },
ServerCertificate = new
X509Certificate(@"e:/certificate.pfx", "123456"),
});
var
quicConnection = await
listener.AcceptConnectionAsync();
var
quicStream = await
quicConnection.AcceptStreamAsync();
Console.WriteLine("connected");
四、客戶端代碼
var
conn = new
QuicConnection(endPoint, new
SslClientAuthenticationOptions()
{
ApplicationProtocols = new
List<SslApplicationProtocol>() { new("quictest") },
});
await
conn.ConnectAsync();
var
stream = conn.OpenBidirectionalStream();
await
stream.WriteAsync(Encoding.UTF8.GetBytes("hello
world"));
參考文章