.net 8 中不存在 quiclistener 类,官方仅提供 quic 客户端支持(quicconnection/quicstream),无服务端监听器实现;裸 quic 服务端需绕过 .net 直接调用 msquic 或等待未来官方支持。

QuicListener 在 .NET 中并不存在
截至 .NET 8(2023 年底最新稳定版),QuicListener 类**并未被官方引入**。.NET 的 System.Net.Quic 命名空间只提供了客户端能力,即 QuicConnection 和 QuicStream,用于发起 QUIC 连接和收发数据;但**没有服务端监听器实现**,也没有 QuicListener、QuicServer 或类似类型。
这意味着你无法像用 HttpListener 或 TcpListener 那样直接 new 一个监听器并 Start() —— 这个类目前纯属不存在,不是隐藏、不是预览、也不是命名不同,而是根本未实现。
.NET 官方 QUIC 支持现状:仅客户端,且需 Windows 11 / Server 2022 + MsQuic
.NET 的 QUIC 支持依赖系统底层的 MsQuic 库,而该库的服务端功能在 .NET 运行时中尚未封装暴露。即使你手动调用 MsQuic 的 C API 实现监听逻辑,.NET 也未提供配套的托管抽象(如 QuicServer 派生类或回调绑定机制)。
当前可确认的事实包括:
-
QuicConnection只能调用ConnectAsync(),不能调用AcceptConnectionAsync() -
QuicListener不在任何 .NET SDK 的程序集(如System.Net.Quic.dll)中导出 - 搜索
dotnet/runtimeGitHub 仓库,可见大量关于“server-side QUIC”的 open issue(如 issue #62297),但均标记为 “future” 或 “unplanned” - Windows 上可用
msquic.dll自行实现服务端,但需 P/Invoke + 手动生命周期管理,无 .NET 流式 API 支持
替代方案:用 Kestrel + HTTP/3(隐式 QUIC)承载 Web API
如果你实际目标是“跑在 QUIC 上的 HTTP 服务”,而非裸 QUIC 流通信,那么正确路径是启用 Kestrel 的 HTTP/3 支持 —— 它底层自动使用 MsQuic,并为你屏蔽连接监听与 TLS 握手细节。
关键操作如下:
- 确保操作系统为 Windows 11 22H2+ 或 Windows Server 2022,且已安装
msquic(通常随系统更新自带) - 项目 SDK 设为
<targetframework>net8.0</targetframework>或更高 - 在
Program.cs中启用 HTTP/3:
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.ListenAnyIP(5001, listenOptions =>
{
listenOptions.UseHttps(); // 必须 HTTPS
listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
});
});启动后,Kestrel 会同时监听 TCP(HTTP/1.1+HTTP/2)和 UDP(HTTP/3/QUIC)端口。浏览器访问 https://localhost:5001 时,若支持 HTTP/3 就会自动走 QUIC。
想做裸 QUIC 服务?目前只能绕过 .NET,直连 MsQuic
若你确实需要自定义协议、非 HTTP 场景下的 QUIC 服务端(例如游戏状态同步、IoT 数据通道),.NET 当前不提供可行路径。可行但高成本的选择只有:
- 用 C/C++ 编写基于 MsQuic 的服务端,通过命名管道、本地 socket 或 gRPC 与 C# 进程通信
- 使用第三方跨平台 QUIC 库(如
neqo(Rust)、quiche(Rust/C)),再通过 P/Invoke 或进程间方式桥接 - 等待 .NET 官方明确路线图(目前无时间表)——不要依赖未发布的预览包或社区魔改版,它们稳定性与兼容性无保障
特别注意:网上部分博客提到的“QuicListener 示例代码”,基本都出自错误理解、拼写混淆(比如把 UdpClient 或 HttpListener 示例误标为 QUIC),或引用了早已废弃的早期 CoreFX 实验分支。










