远程桌面项目RustDesk项目分析
项目介绍
rustdesk
是由rust语言开发的远程桌面软件,由客户端与服务端组成,具有注册/中继功能。
客户端
代码结构:
- libs/hbb_common: 视频编解码, 配置, tcp/udp 封装, protobuf, 文件传输相关文件系统操作函数, 以及一些其他实用函数
- libs/scrap: 截屏
- libs/enigo: 平台相关的鼠标键盘输入
- src/ui: GUI
- src/server: 被控端服务,audio/clipboard/input/video 服务, 已经连接实现
- src/client.rs: 控制端
- src/rendezvous_mediator.rs: 与rustdesk-server保持 UDP 通讯, 等待远程连接(通过打洞直连或者中继)
- src/platform: 平台服务相关代码
- flutter: 移动版本的Flutter代码
- flutter/web/js: Flutter Web版本中的Javascript代码
服务端
为了方便开发自定义的服务端,作者提供了一个更简单的服务端rustdesk-server-demo工程。
代码结构:
- libs/hbb_common: tcp/udp 封装, protobuf
服务程序组成:
hbbs
- RustDesk ID注册服务器hbbr
- RustDesk 中继服务器