VNC簡介
VNC(Virtual Network Computing)是基於RFB(Remote Frame Buffer)協議的遠程系統,C/S端口默認為5900,B/S端口默認為5800。
RFB (遠程幀緩存) 是一個遠程圖形用戶的簡單協議,工作在幀緩存級別上,其傳輸的是像素數據是以XY為起點的方框數據,通過矩形圖形數據組進行幀緩存的更新。另外更新是由客戶端通過命令驅動的,也就是說更新只是服務器在響應客戶端的請求時發生的,如果網絡較差時,有些幀的緩存會忽略,這樣能減少客戶端對網絡和繪制速度的要求。
遠程桌面協議對比:
SPICE | VNC | RDP | |
---|---|---|---|
BIOS屏幕顯示 | 能 | 能 | 不能 |
全彩支持 | 能 | 能 | 能 |
更改分辨率 | 能 | 能 | 能 |
多顯示器 | 多顯示器支持(高達4畫面) | 只有一個屏幕 | 多顯示器支持 |
圖像傳輸 | 圖像和圖形傳輸 | 圖像傳輸 | 圖像和圖形傳輸 |
視頻播放支持 | GPU加速支持 | 不能 | GPU加速支持 |
音頻傳輸 | 雙向語音可以控制 | 不能 | 雙向語音可以控制 |
鼠標控制 | 客戶端服務器都可以控制 | 服務器端控制 | 服務器端控制 |
VNC作為一種遠程桌面協議,常常用在嵌入式開發中,在嵌入式設備上運行vnc服務程序,即可在PC端遠程控制。
QT環境要求
- QT版本需要
5.8
以上,可以下載相應版本的源碼包,比如5.9.6.zip,解壓之后,在qtbase/src/plugins/platforms
下可以看見有vnc
的源碼
- 檢查qt庫安裝目錄下插件
plugins
文件夾中platforms
目錄是否有vnc動態庫libqvnc.so
# ls /usr/lib/qt5.8/plugins/platforms/
libqeglfs.so libqminimal.so libqoffscreen.so
libqlinuxfb.so libqminimalegl.so libqvnc.so
注意:QT提供的VNC服務比較簡單,只支持一些基本的功能,另外老版本的VNC中也有一些BUG可能會造成崩潰,所以最好還是盡量使用新版本。
使用教程
QT程序啟動vnc服務
-
方式1:通過設置環境變量,改變程序的啟動方式
配置QT程序的啟動的方式
export QT_QPA_PLATFORM=vnc
-
方式2:啟動程序時指定啟動方式
啟動參數
./test -platform vnc:size=800x600,port=12345
- size 分辨率
- port 服務端口號(不加則默認為5900)
使用VNC客戶端
市面上的VNC客戶端有很多,常用的比如Realvnc,另外也有很多開源的項目:
參考