作为客户端支持工具的一部分,我想提供一些功能,以便能够请求查看/远程控制桌面会话。有许多方法可以获取屏幕截图,然后将其流式传输,但我特别想找出为什么RDP (远程桌面/终端服务与VNC体验)如此不同。我之所以使用RDP和VNC,只是因为它们似乎使用截然不同的方法将屏幕流式传输到客户端。
如果我必须猜测,RDP似乎传输位图图形块(例如100x100px)以构建完整的图片(这可能相当慢),但似乎传输正常的绘制形状/填充,或字体绘制到客户端非常快。VNC似乎会拍摄屏幕的巨大快照,比较之前的图像,并将更改流式传输到客户端。
我觉得RDP是一种比其他协议更高质量和更流畅的协议,那么它使用什么技术来实现这一点呢?
编辑-只是为了澄清,我问的是这些图形技术,特别是作为一种流协议编程方法-而不是为了使用哪种现有产品/技术来解决这一业务需求。
发布于 2009-02-12 06:01:54
正如你所发现的,它们在流变化的方式上都有很大的不同。MS的RDP协议是可以在线购买的ITU standard (T.128)的扩展。
RDP实现了许多节省带宽的技术,这些技术相辅相成,使其在低带宽下非常有效。
另一方面,VNC具有非常基本的压缩技术:它将发送已更改的位图块,并将使用从RLE到jpeg的基本压缩类型来有效地传输这些块。
不幸的是,它在低带宽上仍然是相当浪费的。
VNC基本上不了解用于构建屏幕的底层图形原语。这使得它很容易在任何机器上使用,因为它只监视屏幕位图的变化。
另一方面,RDP更深入地挂钩于Windows API,并且能够基于在客户机上生成相同更新所需的最少信息量来优化其流。
如果您想要集成远程桌面功能,您有两个选择:
对于
如果你想更深入地了解这一点,可以使用linux rdesktop客户端的源代码,它可以通过RDP连接到Windows机器。
FogCreek的Copilot实际上使用了一个,你可以得到它的source,因为它是建立在FogCreek之上的
在CodeProject on RDP和VNC上也有许多项目。
发布于 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最大的收获来自:
这些都是脑海中浮现的大问题。有关绘图功能的完整列表,请参阅协议规范的第2.2.7节功能集。
https://stackoverflow.com/questions/540188
复制相似问题