在.Net 中使用Quic通信嘗鮮


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

一、安裝Nuget包

首先我們需要安裝Nuget包,需要安裝如下Nuget包:Quic.NET

由於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"));

 

最后,這里記錄下如何安裝libmsquic。官方的說明文檔如下,

  1. 添加 packages.microsoft.com 存儲庫。 有關說明請參閱  Microsoft 產品的 Linux 軟件存儲庫
  2. 使用發行版的包管理器安裝 libmsquic 包。

以Ubuntu為例,其主要就如下四句命令:

    curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
    sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
    sudo apt-get update
    apt install libmsquic

 

參考文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM