十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RustDesk Server Demo:3 条命令跑起来一个最小可运行的 RustDesk 中继服务器

RustDesk Server Demo:3 条命令跑起来一个最小可运行的 RustDesk 中继服务器 RustDesk Server Demo3 条命令跑起来一个最小可运行的 RustDesk 中继服务器【免费下载链接】rustdesk-server-demoA working demo of RustDesk server implementation项目地址: https://gitcode.com/gh_mirrors/ru/rustdesk-server-demoRustDesk Server Demo 是一个最小可运行的 RustDesk 服务端实现。它能让你在最短的代码里看懂远程桌面中继服务器是怎么干活的注册设备 ID、分配中继地址、双向转发流量。它只支持一条中继连接没有 NAT 穿透、没有加密和持久化但作为你自己写 RustDesk server 的起点再合适不过。 3 条命令跑起来先装好 Rust 工具链rustup负责安装编译器和包管理工具然后 clone 并运行git clone https://gitcode.com/gh_mirrors/ru/rustdesk-server-demo cd rustdesk-server-demo IP你机器的公网 IP cargo runcargo run会启动一个同时监听 3 个端口的服务UDP 21116接收客户端注册设备 IDTCP 21116处理打洞请求把中继地址发给客户端TCP 21117真正的中继转发通道注意那个IP环境变量——服务端会把它的值告诉客户端告诉对方打洞失败就来这里走中继。所以它必须填一个客户端能访问到的地址一般就是这台机器的公网 IP。️ 项目地图代码都放在哪整个项目很薄真正要看的东西就两个地方入口 src/main.rs 和共享库 libs/hbb_common/。路径它是干什么的什么时候需要看它src/main.rs程序入口demo 的全部服务端逻辑都在这一个文件里注册应答、下发中继地址、双向转发第一个要读的文件想看懂 demo 原理就看它libs/hbb_common/共享基础库TCP/UDP 封装、protobuf 消息解析、字节编解码、zstd 压缩等想改网络层或消息处理时libs/hbb_common/protos/message.proto和rendezvous.proto两个协议定义文件想新增消息类型、搞清楚字段含义时Cargo.toml根项目配置包信息 对 hbb_common 的本地依赖声明加/删依赖时libs/hbb_common/Cargo.toml共享库的真实依赖清单tokio、protobuf、zstd 等和 quic feature 定义升版本、开 QUIC 时其余文件一句带过README.md 旁边还有德、法、荷、波四种语言的翻译版内容一致看英文版即可LICENSE 是 AGPL-3.0商用或二次分发前扫一眼。️ 改配置前先懂这些这个 demo 没有独立的配置文件你想改的东西基本都落在两个 Cargo.toml 上。按你可能会想改什么来看想加一个新依赖 → 动根 Cargo.toml[package]只是身份证名字rustdesk-server、版本 1.0.0改名或发版时才碰它。[dependencies]里只有一条hbb_common { path libs/hbb_common }。注意这是路径依赖——共享库不是从 crate 仓库下载的就放在项目里的libs/文件夹中。如果你挪动库的位置只需改这里的 path。想升版本或开 QUIC → 动 libs/hbb_common/Cargo.toml依赖的重量都在这tokio异步运行时、protobuf协议解析、zstd压缩……三处值得留意[features]里定义了quic [quinn]。想启用 QUIC 传输QUIC 是一种基于 UDP 的低延迟传输协议需要在根 Cargo.toml 的 hbb_common 依赖上补一行features [quic][build-dependencies]里的protobuf-codegen-pure是构建期工具编译时把protos/下的 .proto 文件自动生成 Rust 代码删掉它构建会直接失败[target.xxx.dependencies]是按操作系统区分的依赖比如 Windows 的 winapi不动它一般没事[dev-dependencies]只服务于测试不进最终产物可以不管。想改端口或监听地址 → 别找配置文件了21116、21117 这些端口和绑定地址是硬编码在 src/main.rs 里的中继地址靠运行时IP环境变量传入。这就是 demo 的风格没有配置层想改什么直接看代码改代码。 下一步以及卡住了怎么办想继续深入建议按这个顺序读libs/hbb_common/protos/rendezvous.proto——先认识 RegisterPeer、PunchHoleRequest 这些消息长什么样main.rs 就通了libs/hbb_common/src/tcp.rs 和 libs/hbb_common/src/udp.rs——服务端的网络收发都在这一层src/main.rs——把上面两块串起来的完整中继流程新手常见的三个坑第一次构建特别慢cargo 要拉下 tokio、protobuf、zstd 等一堆依赖并全部编译耐心等。如果直接报找不到 cargo是 Rust 工具链没装好。跨网段连不通多半是IP环境变量填错了。局域网调试可以填内网 IP但客户端访问不到的地址等于白填。以为它能上生产不能。它只支持一条中继连接、无 NAT 穿透、无持久化、无加密定位就是教学 demo。要真部署用 RustDesk 官方的 hbbs/hbbr而不是这个 demo。【免费下载链接】rustdesk-server-demoA working demo of RustDesk server implementation项目地址: https://gitcode.com/gh_mirrors/ru/rustdesk-server-demo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表