2011-07-12 67 views
1

有沒有人知道如何在vnc通信中添加額外的數據幀以及視頻幀。客戶端和服務器都將由我處理。還有如何在兩邊編碼和解碼額外的數據幀。如何添加額外的數據幀到VNC通信?

任何幫助,將不勝感激。

回答

0

我的RFB(VNC)協議中發現的最好的參考就是:http://tigervnc.org/cgi-bin/rfbproto

你有幾個大方向的。

如果你不介意擴展協議,那麼你可以添加新的消息類型到你的協議(因爲你控制兩端)。請參閱clientcuttextservercuttext作爲用於在任一方向發送任意數量的數據的現有消息的示例。缺點是如果您的客戶端或服務器連接成不同的客戶端或服務器,那麼這將導致致命錯誤。

另一種選擇是以向後兼容的方式擴展現有消息。例如,您可以通過發送位於視口之外的鼠標事件(然後發送回到真實位置的最終鼠標事件),將客戶端發送給服務器消息。您可以通過發送位於視口之外的幀緩衝區更新來將服務器發送到客戶端消息。這將不會被普通客戶顯示。

+0

嗨kanaka,謝謝你也快速respone.Can我也有任何安全的手段也在溝通。客戶端將在QT上運行,服務器將在Android上運行。 – Pawan

+0

有幾種加密模式是VNC協議的標準部分,例如VeNCrypt和SASL(它們是在中途升級的)。您還可以使用SSL從一開始就SSL加密整個流。人們通常使用stunnel命令來做到這一點,但如果您有權訪問雙方的SSL庫,那麼您可以自己做。然而,這種類型的加密的痛苦部分總是關鍵的管理部分。 – kanaka

+0

好的,所以我可以使用clientcuttext和servercuttext來傳遞額外的數據,以及加密,我的客戶端和服務器將始終保持修復? – Pawan

1

使用'水印'。您可以設置每個X幀有數據。每個像素都將用於存儲一些數據。記錄每個第X-1幀的每個像素,並且對於每個第X幀,忽略服務器視頻輸入中的任何實際變化,但是如果您希望該位爲1,則使該像素較暗,如果您希望它爲0,請保留像素相同。在1024 x 768像素的顯示器上,您可以使用此方法每隔X幀存儲786kb的數據。確保不壓縮將存儲數據的幀的流。

如果你不需要786kb,只需要在屏幕的上半部分進行操作,就可以節省一些帶寬,並且可以將786kb的一半用作數據。

你應該能夠實施大多數(如果不是全部)加密的話。你也可以做很多混淆。也許每個第三位都是隨機的,沒用的。也許如果第一位是1,則翻轉所有內容。等等等等

+1

很好的答案! +1 –

+0

嗨gladoscc,閱讀你的答案後,我已經意識到,我沒有以適當的方式問我的問題。我編輯了我的問題。該錯誤的原因。我只需要在視頻幀中添加vnc通信中的數據幀。根據前面的問題,你的答案就像是一個正確的速記。 – Pawan

+0

我曾看過VNC協議。發送自定義數據沒有官方標準,因此您需要創建一個非標準事件。 我發現它描述的很詳細VNC協議與所有標準(和一些非官方的)事件沿着這個PDF文檔: www.realvnc.com/docs/rfbproto.pdf 這是不可能提供確切「什麼做「教程式的建議,因爲我甚至不知道你將使用哪種語言編寫代碼! 如果您不知道如何實現這一點,對不起,但你應該先做一些事情。 請不要被我的語氣在這篇文章中推遲! :) – apscience

相關問題