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

时间:2013-09-30 04:28:10

标签: c vnc vnc-server

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

我知道它已在“How RealVNC works?”中得到解答。但我的问题是 a)如何仅发送更改的矩形? b)我们如何知道更新必须以“这些”多个矩形发送?

同样的问题在“RFB Protocol : Send incremental framebuffer update”中提出,但没有回应...... 请帮我解决这个问题。我在C工作。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你对这个标准感到有点困惑。

RFB Standard

  

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

这意味着如果您收到增量请求,则会发送整个部分,因为客户端已经忘记了那里的内容。您可以使用您认为合适的任何矩形配置发送此部分。

RFB Standard

  

如果客户端没有丢失该区域的任何内容   有兴趣的话,它会发送一个带增量的FramebufferUpdateRequest   设置为非零(true)。如果有特定的变化   在framebuffer的区域,服务器将发送一个FramebufferUpdate。

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

  

b)我们如何知道更新必须在"这些"很多矩形?

您可以使用您希望的任何矩形组合发送更新。虽然我目睹了客户因在时髦的订单中发送更新而崩溃。但你可以发送1个矩形或1000个矩形,它取决于你。