2013-09-30 55 views
1

我正在設計一個VNC服務器。根據標準的VNC/RFB協議,我得到一個包含x座標,y座標,寬度和高度的幀緩衝請求。我的服務器必須發送「僅更改區域,即只發送與客戶端不同的矩形」。如何在VNC中發送幀緩衝區更新?

我知道它已在「How RealVNC works?」中回答。但我的問題是 a)如何只發送更改的矩形? b)我們如何知道更新必須在「這些」多個矩形中發送?

而同樣的問題被問到「RFB Protocol : Send incremental framebuffer update」,但沒有任何反應。 請幫我解決這個問題。我在C工作。

在此先感謝。

+0

你有什麼VNC服務器顯示 - 用戶的桌面?如果是這樣,你在爲客戶端寫什麼操作系統? – duskwuff

+0

@duskwuff:U可以說它顯示用戶的桌面。例如。如果手機連接到汽車信息娛樂系統,我的服務器將在移動端。所以基本上我需要發送我的手機屏幕。所以它應該能夠顯示視頻或圖像的屏幕截圖。 –

回答

0

我認爲你對標準有點困惑。

RFB Standard

然而,如果由於某種原因,客戶端已經失去它需要一個特定 區域中的內容,則客戶端發送一個 FramebufferUpdateRequest增量設置爲零(假)。此 請求服務器儘快發送指定區域 的全部內容。該區域將不使用CopyRect 編碼

這意味着,如果你得到一個增量的要求,您發送的整個部分進行更新,因爲客戶已經忘記了去那裏。您可以以任何您認爲合適的矩形配置發送此部分。

RFB Standard

如果客戶端還沒有失去它是 感興趣的區域的任何內容,然後將其發送具有增量 集FramebufferUpdateRequest非零(真)。如果當幀緩衝區的指定區域發生更改時,服務器將發送幀緩衝區更新。

這意味着如果您得到一個非強制性請求(增量標誌設置爲true,我知道,它的啞),您發送屏幕上發生的任何更改。

b)我們如何知道更新必須在「這些」多個矩形中發送?

您可以發送任何您想要的矩形組合的更新。儘管我親眼目睹了客戶因發送時髦訂單發送更新而崩潰。但是,您可以發送1個矩形或1000個矩形,這取決於您。

相關問題