首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RDP/终端服务与VNC流媒体技术的区别

RDP/终端服务与VNC流媒体技术的区别
EN

Stack Overflow用户
提问于 2009-02-12 05:35:58
回答 2查看 17.2K关注 0票数 7

作为客户端支持工具的一部分,我想提供一些功能,以便能够请求查看/远程控制桌面会话。有许多方法可以获取屏幕截图,然后将其流式传输,但我特别想找出为什么RDP (远程桌面/终端服务与VNC体验)如此不同。我之所以使用RDP和VNC,只是因为它们似乎使用截然不同的方法将屏幕流式传输到客户端。

如果我必须猜测,RDP似乎传输位图图形块(例如100x100px)以构建完整的图片(这可能相当慢),但似乎传输正常的绘制形状/填充,或字体绘制到客户端非常快。VNC似乎会拍摄屏幕的巨大快照,比较之前的图像,并将更改流式传输到客户端。

我觉得RDP是一种比其他协议更高质量和更流畅的协议,那么它使用什么技术来实现这一点呢?

编辑-只是为了澄清,我问的是这些图形技术,特别是作为一种流协议编程方法-而不是为了使用哪种现有产品/技术来解决这一业务需求。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-12 06:01:54

正如你所发现的,它们在流变化的方式上都有很大的不同。MS的RDP协议是可以在线购买的ITU standard (T.128)的扩展。

RDP实现了许多节省带宽的技术,这些技术相辅相成,使其在低带宽下非常有效。

另一方面,VNC具有非常基本的压缩技术:它将发送已更改的位图块,并将使用从RLE到jpeg的基本压缩类型来有效地传输这些块。

不幸的是,它在低带宽上仍然是相当浪费的。

VNC基本上不了解用于构建屏幕的底层图形原语。这使得它很容易在任何机器上使用,因为它只监视屏幕位图的变化。

另一方面,RDP更深入地挂钩于Windows API,并且能够基于在客户机上生成相同更新所需的最少信息量来优化其流。

如果您想要集成远程桌面功能,您有两个选择:

对于

  • RDP,您可以使用用于web远程功能的ActiveX。您可能希望查看一下wrapper,以便将其集成到您自己的软件中。

如果你想更深入地了解这一点,可以使用linux rdesktop客户端的源代码,它可以通过RDP连接到Windows机器。

FogCreek的Copilot实际上使用了一个,你可以得到它的source,因为它是建立在FogCreek之上的

CodeProject on RDPVNC上也有许多项目。

票数 10
EN

Stack Overflow用户

发布于 2009-08-22 20:42:17

正如Renaud所说,VNC只是一块一块地发送位图更改,而不知道内容是什么。RDP要聪明得多。

您可以从这两个规范中查看RDP的确切功能:

协议层:http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx

图形级别:http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx

我认为RDP最大的收获来自:

  • 缓存:客户端可以存储大量以前看到的块,服务器可以告诉客户端如何使用它们。此外,这些都是持久的,因此当客户端连接到服务器时,它可以通告它在磁盘上有哪些块。当窗口被移动时非常有用。此外,窗口的许多部分,如标题栏,都是same.
  • Line/Block绘图。正如您所猜到的,RDP具有直线、多边形和矩形绘制操作。在绘图窗口中,这些是非常常用的。
  • 字体绘图。RDP有一种方法可以发送字体的gylphs,并告诉客户端渲染它们。
  • 光标渲染。光标图标作为字形发送。VNC简单地使用一个点

这些都是脑海中浮现的大问题。有关绘图功能的完整列表,请参阅协议规范的第2.2.7节功能集。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/540188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档