streaming - RDP/终端服务与 VNC 流技术之间的差异

标签 streaming remote-desktop remote-access vnc

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

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

我觉得 RDP 是一种比其他任何协议(protocol)都更加高质量和流畅的协议(protocol),那么它使用什么技术来实现这一目标?

编辑 - 只是为了澄清,我询问这些图形技术专门作为流协议(protocol)编程方法 - 不是使用现有的产品/技术来解决此业务需求。

最佳答案

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

RDP 实现了许多相互补充的带宽节省技术,使其在低带宽下非常高效。

另一方面,VNC 具有非常基本的压缩技术:它将发送已更改的位图 block ,并将使用基本类型的压缩(从 RLE 到 jpeg)来有效地传输这些 block 。
不幸的是,在低带宽下它仍然相当浪费。

VNC 基本上不了解用于构建屏幕的底层图形基元。这使得它可以在任何机器上轻松使用,因为它只监视屏幕位图的更改。
另一方面,RDP 更深入地连接到 Windows API,并能够根据在客户端上生成相同更新所需的最少量信息来优化其流。

如果您想集成远程桌面功能,您有多种选择:

  • 对于 RDP,您可以使用用于 Web 远程功能的 ActiveX。您可能想看看 wrapper将其集成到您自己的软件中。
    如果您想更深入地了解这一点,可以使用 linux rdesktop 的源代码。通过 RDP 连接到 Windows 计算机的客户端。

  • 对于 VNC,有许多开源实现。
    FogCreek 的 Copilot 实际上使用了一个,你可以得到它的 source因为它是建立在TightVNC之上的

CodeProject on RDP上还有很多项目和 VNC .

关于streaming - RDP/终端服务与 VNC 流技术之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540188/

相关文章:

android - 视频流和安卓

web - 如何从流媒体网站下载文件?

linux - 如何在远程linux屏幕上显示执行结果(通过ssh输入命令)?

Java - 如何远程访问 Windows 注册表

ssh - "Force psuedo-tty allocation"不能转换为 pssh

python - BigQuery 拒绝在流式传输时插入少量记录

android - 媒体播放器、exoplayer 和音频流

client-server - 通过远程桌面运行的程序可以调用客户端计算机上的程序吗?

linux - xrdp 未连接到 SLES11 SP4

ssl - 为没有 FQDN 的远程桌面颁发 SSL 证书