跳到正文
汉松札记
返回

桌面虚拟化传输协议之 android spice

技术笔记

背景

云计算是目前计算机领域的一个热门领域,桌面虚拟化是其中的一个重要应用,即把桌面系统在服务器端虚拟化,然后通过传输协议传输数据到客户端来实现桌面虚拟化,这样的好处就在于不管用什么设备,只要通过客户端都可以访问到云端的系统,随时随地都可以在一个系统上工作。

目前有两大标准的桌面传输协议,分别是 RBP 和 RDP。

RBP

RDP

那么对于移动设备来说,很显然,RDP 协议更适合移动设备,因为移动设备在 3G,4G 情况下不可能用耗费大流量的 RFB 协议,并且延迟比较高。而 RDP 协议由于传输的数据量较少,对网络条件要求不高。所以,针对于移动平台来说,RDP 协议比较合适。

但是,由于 RDP 协议是微软的产品,受限于其证书,并不是开源产品,所以不能用于移动设备。那么,开源的类 RDP 协议的SPICE协议,就隆重登场了,结合我们的主题,在 android 平台上应用 spice 协议。下面,我们来介绍 spice 在 android 平台上的应用。

SPICE 协议在 android 平台的应用

Spice 事实上并没有 android 版本,但是它有 linux 版本,而 android 是基于 linux 的,所以,我们可以通过使用 NDK 来交叉编译 Spice 库到 android 上使用。也就是说,我们可以通过使用 JNI 来调用 libspice.so(通过 NDK 交叉编译),从而在 android 平台上使用 Spice。

android spice

Spice 服务器通过通道 (Channel) 来与客户端通信,其中 jpeg 模块是通过 NDK 编译好的库,使用 JNI 调用,把服务器发送过来图像命令转化为图像,再把图像交给 android 的 View 显示出来。

在实际使用中,需要对图像的解析过程进行优化,否则显示的延迟很大。一个解决方案是使用更快的 jpeg 解析库。

最后,推荐一个开源的 spice 安卓客户端remote-desktop-clients

以上只是对 Spice 工作原理的简单描述,详细介绍查看官方文档:


订阅 技术笔记

分享这篇文章:


上一篇
理解链接之链接的基本概念
下一篇
算法学习之减治法 (decrease and conquer)