最近对远程控制有点兴趣,于是我查了一些资料。
-
x11 是界面控制的协议,xlib 是 该协议在 linux 的代码实现。 x11 的工作流程是这样的:
鼠标键盘输入 -> 应用程序处理 -> 显示器显示
- 人直接接触的输入输出部分是服务器端,应用程序是客户端。
- 至于为啥这个样,估计是以前的项目规划上一般是多对一列为服务器客户端模式,一个服务器为多个客户端服务。
- 虽然这样实现理解上有点拗口,但是原理上确实是这样的,这样规划很方便实现远程操作。
-
vnc 是一个远程控制
vnc 项目也是一个远程控制的程序,也有服务端和客户端,服务器会生成的一个 不影响 系统本身操作的虚拟桌面,客户端是就是负责显示。
另外,vnc服务器和客户端传递的是界面的图片,客户端只是负责图片显示而不是x11的客户端要负责图片的生成。
-
rdp 协议
rdp 协议是 微软实现的远程控制协议。RDP主要传指令,默认工作在 3389 端口。没有看到太多介绍,估计和 x11 类似的性质。
百度的时候还发现一个 x11vnc 的项目,看了下源码,是通过 x11 的 XGetImage 函数截取系统的界面,来生产的 server端传递的数据。所以这个项目提供一个 操作实体机界面的 vnc server。
其他的项目后面看到再分析,大家对远程控制有啥看法,发在评论区, 我们可以一起讨论。
参考