如何在VNC中发送帧缓冲区更新?

如何在VNC中发送帧缓冲区更新?,c,vnc,vnc-server,C,Vnc,Vnc Server,我正在设计一个VNC服务器。根据标准的VNC/RFB协议,我得到一个包含x坐标、y坐标、宽度和高度的帧缓冲请求。我的服务器必须发送“仅更改区域,即仅发送与客户端不同的矩形” 我知道已经用“”回答了。但我的问题是 a) 如何仅发送已更改的矩形? b) 我们如何知道更新必须以“这些”多个矩形发送 在“”中也提出了同样的问题,但没有人回答。。 请帮我解决这个问题。我在C工作 提前谢谢。我想你对标准有点困惑 但是,如果由于某种原因,客户端丢失了 它需要的特定区域,然后客户端发送 增量设置为零的Fram

我正在设计一个VNC服务器。根据标准的VNC/RFB协议,我得到一个包含x坐标、y坐标、宽度和高度的帧缓冲请求。我的服务器必须发送“仅更改区域,即仅发送与客户端不同的矩形”

我知道已经用“”回答了。但我的问题是 a) 如何仅发送已更改的矩形? b) 我们如何知道更新必须以“这些”多个矩形发送

在“”中也提出了同样的问题,但没有人回答。。 请帮我解决这个问题。我在C工作


提前谢谢。

我想你对标准有点困惑

但是,如果由于某种原因,客户端丢失了 它需要的特定区域,然后客户端发送 增量设置为零的FramebufferUpdateRequest(false)。这 请求服务器发送指定区域的全部内容 尽快。不会使用CopyRect更新该区域 编码

这意味着,如果您收到一个增量请求,您将发送整个部分,因为客户机已经忘记了其中的内容。您可以将此部分以您认为合适的任何矩形配置发送

如果客户端未丢失其所在区域的任何内容 感兴趣,然后它发送一个带有增量的FramebufferUpdateRequest 设置为非零(true)。如果和何时对规定进行变更 在帧缓冲区区域,服务器将发送帧缓冲区更新

这意味着,如果您收到一个非犯罪请求(增量标志设置为true,我知道,它是哑的),您将发送屏幕上发生的任何更改

b) 我们如何知道更新必须以“这些”多个矩形发送


您可以根据需要以任意矩形组合发送更新。尽管我亲眼目睹过客户因为发送时髦订单的更新而崩溃。但是您可以发送1个矩形或1000个矩形,这取决于您。

您的VNC服务器显示的是什么-用户的桌面?如果是这样的话,你在为什么操作系统编写客户端?@Dashwuff:U可以说它显示了用户的桌面。例如,如果手机连接到汽车信息娱乐系统,我的服务器将在手机端。所以基本上我需要发送我的手机屏幕。因此,它应该能够显示视频或图像的屏幕截图。