在.Net 中使用Quic通信嚐鮮

Quic基本上已經成了下一代互聯網基礎傳輸協議的既定標準了,雖然quic的標準還沒有完全定稿,但微軟已經推出了跨平臺的ms-quic實現了,在.net 7中會內置對MS Quic的封裝,不過由於.net 7得到2022年的11月份發佈,需要等上不少時間。昨天發現github上有人將.net 7中System.Net.Quic名字空間下部分實現給遷移到了.net 6下,便簡單的試了一下。

一、安裝Nuget包

首先我們需要安裝Nuget包,需要安裝如下兩個包:

  1. Quic.NET
  2. 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"));

 

參考文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章