[远程桌面控制软件系列之000] 原理解析
背景:
这几天居家隔离,想着之前的远程控制软件不太好用,要么收费,要么难用,之前也实现了安卓的远程控制,想着自己写一款适用于PC之间的通用远程桌面控制工具。
语言:
思来想去加上调研和自己熟悉的情况,决定采用Java来实现,具体原因有如下几点:
- 个人相对于C、C++,本身对Java熟悉一点。
- 为了之后实现安卓端,可以复用部分代码。
- Java自带的Robot可以很方便实现远程控制,已经包含屏幕截屏,图片编码,用户事件处理。
- 可能可以跨平台,关于资源占用,现代的21世纪(0202年)的电脑,应该都用上了SSD和4G+的内存了。
- 其他...
知识储备
远程控制系统主要分为两个端:被控端、控制端。
首先,我们看看被控端需要做什么?
- 通过socket/websocket接收远程控制请求
- 获取屏幕截屏
- 对截屏进行编码压缩(JPEG|自定义协议)
- 通过socket/websocket发送截屏
- 通过socket/websocket接收控制端的用户事件
- 执行用户事件
- 以上步骤循环
然后,我们看看控制端需要做什么?
- 通过socket/websocket发送远程控制请求
- 通过socket/websocket接收截屏
- 把截屏在本地渲染出来(Java Canvas|Direct3D|OpenGL)
- 通过socket/websocket发送用户事件
- 以上步骤循环