VNC简介
VNC(Virtual Network Computing)是基于RFB(Remote Frame Buffer)协议的远程系统,C/S端口默认为5900,B/S端口默认为5800。
专注于为中小企业提供成都做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业三明免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
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=
- size 分辨率
- port 服务端口号(不加则默认为5900)
使用VNC客户端
市面上的VNC客户端有很多,常用的比如Realvnc,另外也有很多开源的项目:
- TigerVNC
- RabbitRemoteControl
参考
- VNC PROTOCOL
- 远程桌面协议对比
- RFB协议解析
- RFB协议具体通信说明
新闻标题:Qt-Vnc远程
本文来源:http://lswzjz.com/article/dsogojp.html