// Package grdp 实现微软 RDP(远程桌面协议)的纯 Go 客户端协议栈。 // // 本包是 nakagami/grdp 的深度 fork(MIT,保留上游版权),由 webrdp // 项目扩展维护:NLA/CredSSP 认证、RDPGFX/H.264 多形态回调、动态分辨率、 // Unicode 输入、多形态剪贴板、音频、驱动器重定向(rdpdr)等能力 // 均在原生 Go API 之下,同一套协议栈可同时编译为原生程序与 // GOOS=js GOARCH=wasm 的浏览器模块。 // // # 基本用法 // // client := grdp.NewRdpClient("host:3389", 1280, 800, // func(addr string) (net.Conn, error) { return net.Dial("tcp", addr) }) // client.OnError(func(e error) { ... }). // OnReady(func() { ... }). // OnBitmap(func(bits []grdp.Bitmap) { ... }) // err := client.Login(domain, user, password) // // 所有 On* 回调在协议栈读循环 goroutine 内同步触发,回调不得长时间 // 阻塞;Login 阻塞直到能力协商完成(会话就绪以 OnReady 为准)。 // // # 渲染模型 // // 传统管线经 OnBitmap 交付 Bitmap(RGBA()/FillRGBA 解码);GFX 管线经 // OnH264Raw/OnH264I420/OnH264NV12 交付 H.264 NAL 或原始平面——解码 // 由宿主负责(浏览器 WebCodecs、FFmpeg 均可),纯 Go 构建即可使用。 // // # 虚拟通道 // // 内置 rdpsnd/cliprdr/rdpdr/rdpgfx/rdpedisp/drdynvc(plugin 子包), // 自定义通道实现 plugin.ChannelTransport 三方法后经 Channels.Register // 注册,见 plugin/channel.go。 // // 目录导览:core/(传输抽象与工具)、emission/(事件发射器)、 // protocol/(x224/tpkt/t125/sec/nla/pdu/lic/gcc 协议层)、 // plugin/(虚拟通道框架与内置通道)。 package grdp