首页/文章/ 详情

Qt商业版 | 商业插件Qt VNC Server

1年前浏览872

“VNC”(或虚拟网络计算)兼容性在Qt中有着悠久的历史,我们现在正在使用Qt 6.4改进这个故事。

历史       01    

我对Qt的历史进行了考古挖掘,我能找到的第一次提到VNC支持是在从2000年7月5日开始的一个名为“VNC 远程帧缓冲区支持”的更改中,早期移植到嵌入式 Linux(最有可能是Qt 2.2)。不过,从技术上讲,VNC是一个品牌名称,支持的协议称为“RFB”(远程帧缓冲区)。使用此协议的客户端和服务器通常称为“VNC兼容”。

这种最初的支持随着时间的推移演变成它现在的表现形式,它作为所谓的“灯塔项目”的一部分出现在Qt 4功能版本之一中,后来更名为QPA(或Qt平台抽象)。

因此,Qt 4、5和6中对VNC的现有支持是一个平台插件,您可以在其中以无头模式运行应用程序,并在连接时渲染到远程VNC兼容客户端。任何基于Qt GUI的应用程序都可以在此模式下运行,通过将“-platform vnc”作为命令行选项传递,或者在环境中设置QT_QPA_PLATFORM=vnc。

这非常优雅并且运行顺利,但它有一个缺点:您可以同时渲染到本地显示器作为远程显示器的唯一方法是在服务器旁边运行VNC兼容客户端并将其连接到本地主机.因此,我们有几个客户要求我们扩展功能以包括镜像到本地显示器。通常,他们的用例是嵌入式设备-通常由Qt Wayland Compositor支持-用户希望将显示内容按需广播给远程用户。

例如,远程用户可能是支持部门的代表,他需要准确地看到最终用户在屏幕上看到的内容,以便有效地帮助他们。应用程序主要应该不受阻碍地运行,但根据请求,它应该能够与远程用户共享其内容,以及接受远程输入(可选)。Qt中的QPA插件不涵盖此用例,因为必须关闭并重新启动应用程序才能进行任何远程连接,并且最终用户将无法在他们的屏幕上看到任何内容,只要系统在这种模式下运行。

因此,我们着手为此提供解决方案,并提出了Qt VNC服务器模块。这将作为Qt 6.4中的技术预览提供给商业客户。文档快照可在此处获得。

   
Qt VNC服务器       02    

我们的主要用例是在基于Qt Wayland Compositor的显示服务器上支持远程桌面,但我们很快意识到限制对Wayland的支持是没有意义的。

QtWayland 合成器通常只是一个Qt Quick应用程序,它组合来自不同客户端的图形缓冲区,因此任何允许您共享QtQuick应用程序内容的解决方案也适用于合成器。我们还知道一些客户的系统中有多个显示器,并且可能希望限制远程用户通过RFB连接只能看到其中一个显示器。

与一般的Qt Quick一样,我们试图使解决方案尽可能简单易用,但仍然足够强大以涵盖许多用例。

为了在您的产品中使用Qt VNC Server,您只需导入QtVncServer模块并创建一个VncItem作为您希望远程共享的子树的根。当没有活动连接时,这将表现为一个空Item,并且不会对应用程序造成任何明显的开销。

当用户连接时,它将使用与ShaderEffectSource相同的机制来捕获子树的内容,并与远程客户端共享。除非明确禁用,否则它将另外接受来自客户端的输入。

Qt VNC Server中的一个示例展示了它如何与Qt WaylandCompositor 一起工作。

这可能是主要用例之一,但值得一提的是,Qt VNC Server模块本身是跨平台的。

附加功能     03    

Qt中现有的VNC插件仍然可用,并且不会随处使用,但Qt VNC Server 希望为正在构建自己的平台的用户增加价值,默认情况下可能没有可用的远程桌面解决方案。

除了对RFB协议的基本支持与QPA插件中的支持相匹配外,Qt VNC Server还实现了Hextile压缩和Zlib压缩(当libz可用时)。它支持检测损坏区域以避免通过网络连接发送过多的数据。最后,它通过 libtomcrypt库(如果可用)支持使用DEC身份验证的密码保护。

技术预览    04  

Qt VNC Server被认为是Qt 6.4中的技术预览版。这意味着我们正在寻找来自潜在用户的反馈:是否需要额外的功能?API是否像我们希望的那样工作,还是我们应该进行调整?等等。

这也意味着与模块的未来版本没有兼容性保证,但API相当小,所以跟上变化应该不是太不切实际。

如果您是Qt的商业用户并认为这听起来很有用,请在您使用Qt 6.4时将其用于测试运行,并让我们知道您的想法。可以像往常一样通过Qt支持报告建议和错误。

如果您想更多地了解Qt商业版,请随时与我们联系!(文/Eskil Abrahamsen Blomfeldt)


深圳市优飞迪科技有限公司成立于2010年,是一家专注于产品开发平台解决方案与工业软件开发的高科技企业,是ANSYS、MSC、COMSOL、Qt、国产CAD、国产尺寸链公差等工业软件的战略合作伙伴,拥有十多项行业领先的自主工业软件著作权。优飞迪科技倡导“极致用户体验驱动产品开发模式”变革,助力中国质造,赋能极致研发,专注于仿真咨询、工业软件开发、工业软件销售、系统集成等领域的产品开发平台解决方案,拥有一支硬核实力的技术服务专家团队,能为企业提供“全心U 端到端服务“。如今,华为、中兴、中国航天、格力、大族、华强、华星光电等知名企业与优飞迪保持着长期的紧密战略合作伙伴关系。

来源:IFD优飞迪
航天尺寸链渲染
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-29
最近编辑:1年前
优飞迪科技
赋能新仿真,创优新设计
获赞 301粉丝 248文章 348课程 4
点赞
收藏
未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈