X11VNC中X11的部分是啥?

Posted

技术标签:

【中文标题】X11VNC中X11的部分是啥?【英文标题】:What is the part of X11 in X11VNC?X11VNC中X11的部分是什么? 【发布时间】:2017-05-03 16:18:59 【问题描述】:

我了解 RFB 协议用于远程显示。 X11VNC 使用 RFB 协议,因此任何 VNC 查看器(基于 RFB)都可以查看显示。

问题:

    例如,假设我有一个帧缓冲区 /dev/fb0。我只是可以编写和运行从基于 RFB 协议的帧缓冲区读取的应用程序。在这种情况下,X11VNC 与它有什么不同。 此外,X11VNC 本身提供了使用原始帧缓冲区的选项。使用/不使用此选项有什么区别?

【问题讨论】:

【参考方案1】:

x11vnc 使用 X11 请求来获取您的屏幕更新 - 通过可用的 Composite/Damage 扩展,或者只是通过按时间间隔执行 GetImage 请求并将其与本地副本进行比较。您不仅想知道屏幕在任何时间点的当前图像,还想知道什么时候改变了,哪些区域受到了影响。同样使用 x11vnc,您可以跟踪单个窗口而不是整个屏幕 - 除了 rfb 服务器之外,还有相当数量的 x11 功能。

【讨论】:

太好了,谢谢安德烈。与我碰巧自己编写相比,使用 X11vnc 应该可以更好地实现查找差异。 RFB(从 Spec 读取)本身并没有指定如何从帧缓冲区中获取差异,对吧?。 rfb 流式传输矩形(可能已压缩),其中包含更新后屏幕上的新内容。 E.i 当您在终端 rfb 中键入字符时,将发送小矩形,例如“嘿 vnc 客户端,位置 [100, 100, 16x16] 的屏幕现在是这个位图”。客户通常会回复“哦,很好,一旦有变化,请尽快给我发送下一个更新” 所以,在 x11vnc + rfb 的情况下,rfb 将得到 x11 的帮助以获取最新的更新和 rfb 流(如您所说的压缩)并发送回客户端。 rfb 本身不会确定屏幕上出现的变化。对吗? x11vnc 充当 rfb 服务器和 X11 服务器的客户端,这里没有独立的“rfb”服务,它只是协议的名称。 x11vnc 只是一个碰巧同时使用两种协议(X11 和 rfb)的程序 非常感谢安德烈。

以上是关于X11VNC中X11的部分是啥?的主要内容,如果未能解决你的问题,请参考以下文章

x11vnc 显示光标和光标运动

debian9 X11vnc

在redhat下使用x11vnc进行桌面共享

使用x11vnc作为vncserver端

deepin安装x11vnc远程服务

ubuntu16.04 安装x11vnc桌面