CN105516262A - 应用程序远程操控方法及系统 - Google Patents
应用程序远程操控方法及系统 Download PDFInfo
- Publication number
- CN105516262A CN105516262A CN201510851923.2A CN201510851923A CN105516262A CN 105516262 A CN105516262 A CN 105516262A CN 201510851923 A CN201510851923 A CN 201510851923A CN 105516262 A CN105516262 A CN 105516262A
- Authority
- CN
- China
- Prior art keywords
- application program
- module
- user
- client
- service end
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种应用程序远程操控方法及系统,通过在服务端设置虚拟的安卓计算环境,根据用户远程操作指令启动相应应用程序后,以串流的方式将远程安卓计算环境上运行应用程序的声音、图像传输给用户,并实时将用户对应用程序的操作反馈,从而达到应用程序投影用户端运行的目的。应用程序无需本地下载与安装,即点即用,结合不同的应用环境可实现包括:避免用户客户端下载应用耗费大量流量;客户端无需下载直接试用应用程序;避免恶意应用程序危害用户客户端;避免客户端单机硬件配置带来的应用程序体验差异;更换设备使用应用程序无需同步应用程序存储数据的有益效果。
Description
技术领域
本发明涉及一种数据交换技术,尤其是指一种应用程序远程操控方法及系统。
背景技术
随着宽带与移动互联网的发展与普及,智能设备(如手机、平板等)成为了每个人必备的电子产品,在智能设备的应用市场(appstore)中,有着数以百万计的应用程序(app),不同的应用程序服务着我们日常的工作、生活、运动、娱乐等各个方面。
但随着应用程序的大量增加以及同一应用来自不同来源,因此海量的应用程序必定带来着软件质量的良莠不齐,而不同来源的应用程序又有着可靠性难以确保的突出问题,随之而来使用者陷入了“欲知应用程序详情,必先下载安装”的窘境,反复下载应用软件不仅耗费流量且也会占据智能设备的存储空间,而不安全来源的应用软件甚至直接会导致使用者不可估量的经济损失,且应用软件中本身就存在诸多,甚至不乏各类恶意软件、病毒、木马,存在违规收集用户信息、恶意“吸费”的产品,因此对于使用者来说,使用到这些海量的应用程序时,如何做出正确的选择成为了一个新的问题,选择的难度与成本也越来越高。
再者,随着智能设备硬件的快速更新换代,不同应用程序对使用者智能设备的性能(诸如计算性能、图形处理性能等)有着不同的要求,因此对于需要直接运行在智能设备端的应用程序而言,许多低端智能设备的使用者被无情的排除在外,对应用程序的推广而言也是一种损失。
发明内容
本发明所要解决的技术问题是:提供了一种应用程序本身运行在服务端,且客户端可远程通过数据流交互操作的应用程序远程操控方法及系统。
为了解决上述技术问题,本发明采用的技术方案为:一种应用程序远程操控方法,包括步骤,
S1)用户通过客户端远程登录服务端与其握手建立通讯;
S2)用户远程请求开启应用程序;
S3)判断是否有空闲的安卓计算单元,是则继续步骤;
S4)分配空闲的安卓计算单元给当前用户;
S5)安卓计算单元加载与对应远程登录用户的用户数据;
S6)启动对应用户远程请求的应用程序;
S7)将应用程序运行过程中的画面、音频内容编码为音视频流;
S8)将音视频流传输至远程用户的客户端;
S9)客户端展现接收到的音视频流;
S10)接收远程用户的操作指令;
S11)判断操作指令是否为退出应用程序,否则转到步骤S12;
S12)响应用户操作指令,投影用户操作于应用程序上,并返回步骤S7。
上述中,所述的步骤S6前还包括,判断用户远程请求开启应用程序是否于安卓计算单元上运行的安卓系统中安装,否则获取应用程序并安装后转到步骤S6的步骤。
上述中,所述步骤S8中,基于UDP协议并加入ACK机制、流量控制及拥塞控制对音视频流进行传输至远程用户。
上述中,所述步骤S1具体包括步骤,
S101)客户端发送握手数据包至服务端;
S102)服务端收到客户端的握手数据包;
S103)服务端生成与用户端相对应的同步cookie及密钥;
S104)服务端向客户端返回握手反馈、同步cookie及密钥;
S105)客户端收到服务端的握手反馈、同步cookie及密钥;
S106)客户端将收到的同步cookie与握手数据包发送至服务端;
S107)服务端收到客户端的握手数据包、同步cookie;
S108)服务端比对收到同步cookie与下发的同步cookie,确认有效性,有效则执行步骤S109;
S109)服务端与客户端连接成功,建立通讯。
上述中,所述步骤S7具体包括步骤,
S701)将音视频流切分为不大于网络最大传输单元的数据包;
S702)对切分的数据包通过递增序号编号;
所述步骤S8具体包括步骤,
S801)设定初始拥塞窗口及最大拥塞窗口;
S802)根据当前传输速度将切分的数据包依次发往客户端;
S803)客户端根据接收数据包的序号连续性判断接收是否完整,是则转到步骤S804及S805;
S804)对接收的数据包根据序号进行数据重组;
S805)向服务端发送确认字符包而后转到步骤S806、S807;
S806)增加传输速度,返回步骤S802;
S807)判断是否到达最大拥塞窗口,否则转到步骤S808;
S808)增加拥塞窗口,返回步骤S802。
上述中,所述步骤S803,否则转到步骤S809;
S809)向服务端发送丢包字符包;
S810)判断积压数据包是否超过阈值,是则转到步骤S811;
S811)降低传输速度,返回步骤S802。
上述中,所述的步骤S7中对画面内容采用H.264编码;对音频内容采用AAC编码。
本发明还涉及一种应用程序远程操控系统,包括,
用户远程登录模块,用于用户通过客户端远程登录服务端与其握手建立通讯而后转到应用请求模块;
应用请求模块,用于用户远程请求开启应用程序而后转到空闲判断模块;
空闲判断模块,用于判断是否有空闲的安卓计算单元,是则转到分配模块;
分配模块,用于分配空闲的安卓计算单元给当前用户而后转到加载模块;
加载模块,用于安卓计算单元加载与对应远程登录用户的用户数据而后转到启动模块;
启动模块,用于启动对应用户远程请求的应用程序而后转到编码模块;
编码模块,用于将应用程序运行过程中的画面、音频内容编码为音视频流而后转到传输模块;
传输模块,用于将音视频流传输至远程用户的客户端而后转到展现模块;
展现模块,用于客户端展现接收到的音视频流而后转到操作接收模块;
操作接收模块,用于接收远程用户的操作指令而后转到操作判断模块;
操作判断模块,用于判断操作指令是否为退出应用程序,否则转到响应操作模块;
响应操作模块,用于响应用户操作指令,投影用户操作于应用程序上,并返回编码模块。
上述中,所述编码模块具体包括,
切分单元,用于将音视频流切分为不大于网络最大传输单元的数据包而后转到编号单元;
编号单元,用于对切分的数据包通过递增序号编号而后转到传输模块;
所述传输模块具体包括,
初始化单元,用于设定初始拥塞窗口及最大拥塞窗口而后转到发送单元;
发送单元,用于根据当前传输速度将切分的数据包依次发往客户端而后转到完整性判断单元;
完整性判断单元,用于客户端根据接收数据包的序号连续性判断接收是否完整,是则转到重组单元及确认字符发送单元;
重组单元,用于对接收的数据包根据序号进行数据重组;
确认字符发送单元,用于向服务端发送确认字符包而后转到加速单元及判断单元;
加速单元,用于增加传输速度,返回发送单元;
判断单元,用于判断是否到达最大拥塞窗口,否则转到增加单元;
增加单元,用于增加拥塞窗口,返回发送单元。
上述中,所述完整性判断单元在连续性判断接收是否完整为否则转到丢包字符发送单元;
丢包字符发送单元,用于向服务端发送丢包字符包而后转到积压判断单元;
积压判断单元,用于判断积压数据包是否超过阈值,是则转到减速单元;
减速单元,用于降低传输速度,返回发送单元。
本发明的有益效果在于:通过在服务端设置虚拟的安卓计算环境,根据用户远程操作指令启动相应应用程序后,以串流的方式将远程安卓计算环境上运行应用程序的声音、图像传输给用户,并实时将用户对应用程序的操作反馈,从而达到应用程序投影用户端运行的目的。应用程序无需本地下载与安装,即点即用,结合不同的应用环境可实现包括:避免用户客户端下载应用耗费大量流量;客户端无需下载直接试用应用程序;避免恶意应用程序危害用户客户端;避免客户端单机硬件配置带来的应用程序体验差异;更换设备使用应用程序无需同步应用程序存储数据的有益效果。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明方法的流程图;
图2为本发明方法的步骤S7、S8具体流程图;
图3为本发明系统的具体实施示例图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
鉴于本发明需求,远程运行应用程序对应的音视频数据流需要以尽可能低的延迟的传输至用户客户端,方可满足体验需求。结合大量测试发现,音视频流的传输延迟需要控制在300毫秒以内才能保证用户体验的流畅性与一致性。同时,对于流媒体数据来讲,偶尔的丢帧错误又是可以容忍的。为此本发明的技术方案如下:
请参阅图1,本发明涉及一种应用程序远程操控方法,包括步骤,
S1)用户通过客户端远程登录服务端与其握手建立通讯;
S2)用户远程请求开启应用程序;
S3)判断是否有空闲的安卓计算单元,是则继续步骤,否则结束;
S4)分配空闲的安卓计算单元给当前用户;
S5)安卓计算单元加载与对应远程登录用户的用户数据;
S6)启动对应用户远程请求的应用程序;
S7)将应用程序运行过程中的画面、音频内容编码为音视频流;
S8)将音视频流传输至远程用户的客户端;
S9)客户端展现接收到的音视频流;
S10)接收远程用户的操作指令;
S11)判断操作指令是否为退出应用程序,否则转到步骤S12,是则关闭服务后结束;
S12)响应用户操作指令,投影用户操作于应用程序上,并返回步骤S7。
从上述描述可知,本发明的有益效果在于:通过在服务端设置虚拟的安卓计算环境,根据用户远程操作指令启动相应应用程序后,以串流的方式将远程安卓计算环境上运行应用程序的声音、图像传输给用户,并实时将用户对应用程序的操作反馈,从而达到应用程序投影用户端运行的目的。应用程序无需本地下载与安装,即点即用,结合不同的应用环境可实现包括:避免用户客户端下载应用耗费大量流量;客户端无需下载直接试用应用程序;避免恶意应用程序危害用户客户端;避免客户端单机硬件配置带来的应用程序体验差异;更换设备使用应用程序无需同步应用程序存储数据的有益效果。
发明方案应用示例:
在用户的手机(客户端)中安装“尝鲜”客户端,用户在展示的应用程序列表中任意选择一款应用,点击“尝鲜”按钮可以看到会先有一个由远程应用程序加载的过程,加载完毕后,云端应用程序完成启动,音视频流数据开始不断传送至本地,用户可像操作本地应用程序一般操作远程应用。
实施例1
上述中,所述的步骤S6前还包括,判断用户远程请求开启应用程序是否于安卓计算单元上运行的安卓系统中安装,是则转到步骤S6,否则获取应用程序并安装后转到步骤S6的步骤。
鉴于配置的安卓计算单元无法预装所有用户所需的应用程序,因此,根据用户远程请求安卓计算单元会判断是否已安装该应用,未有该运用则获取应用安装后呈现给客户端。应用程序的获取安装可从集群内的数据服务端上获取目标应用安装包后进行快速安装而实现。
实施例2
上述中,所述步骤S8中,基于UDP协议并加入ACK机制、流量控制及拥塞控制对音视频流进行传输至远程用户。
众所周知的,UDP与TCP相比,是一种无连接的、面向数据报的协议。因此更加轻量,传输速度也更快。因此本实施例中采用UDP对音视频流进行传输,可较寻常TCP传输更有传输速度的保障,从而确保客户端收到音视频流的流畅性。
但同时,由于现有的UDP协议应用中并没有TCP协议中的ACK机制以及流量控制(FlowControl)、拥塞控制(CongestionControl),因此UDP协议直接应用于本技术时候传输音视频流数据又不够可靠。因此,为了实现稳定的数据传输,本发明在UDP协议基础上增加了入ACK机制、流量控制及拥塞控制。从而提出一套有别于以往UDP传输的可靠UDP传输方案。
实施例3
上述中,所述步骤S1具体包括步骤,
S101)客户端发送握手数据包(handshake包)至服务端;
S102)服务端收到客户端的握手数据包;
S103)服务端生成与用户端相对应的同步cookie及密钥;
S104)服务端向客户端返回握手反馈(handshakeresponse)、同步cookie(syncookie)及密钥(secretkey);
S105)客户端收到服务端的握手反馈、同步cookie及密钥;
S106)客户端将收到的同步cookie与握手数据包发送至服务端;
S107)服务端收到客户端的握手数据包、同步cookie;
S108)服务端比对收到同步cookie与下发的同步cookie,确认有效性,有效则执行步骤S109;
S109)服务端与客户端连接成功,建立通讯。
本实施例提供的是一种类似于tcp的3次握手方式,通过采用本实施例技术,可大幅提高客户端与服务端建立通讯的可靠度。
实施例4
上述中,所述步骤S7具体包括步骤,
S701)将音视频流切分为不大于网络最大传输单元(MTU)的数据包;
S702)对切分的数据包通过递增序号编号;
所述步骤S8具体包括步骤,
S801)设定初始拥塞窗口及最大拥塞窗口;
S802)根据当前传输速度将切分的数据包依次发往客户端;
S803)客户端根据接收数据包的序号连续性判断接收是否完整,是则转到步骤S804及S805;
S804)对接收的数据包根据序号进行数据重组;
S805)向服务端发送确认字符(ACK)包而后转到步骤S806、S807;
S806)增加传输速度,返回步骤S802;
S807)判断是否到达最大拥塞窗口,否则转到步骤S808;
S808)增加拥塞窗口,返回步骤S802。
本实施例为确保音视频流稳定、流畅传输至客户端而给出的一种具体实施例技术方案。方案中通过将大数据的音视频流切割数据包方式传送,并结合ACK机制、流量控制、拥塞控制从而在UDP协议传送基础上确保了音视频流传送的流畅性。
实施例5
进一步的,上述步骤S803,否则转到步骤S809;
S809)向服务端发送丢包字符包;
S810)判断积压数据包是否超过阈值,是则转到步骤S811,否则转回步骤S802;
S811)降低传输速度,返回步骤S802。
本实施例中,在拥塞控制上,传统TCP拥塞控制一般采用AIMD原则,即加法增大、乘法减小。当发生超时或丢包时,窗口立即减半,重新进入慢启动阶段。这在传统有线网络可以较好的保证流之间的公平性。而在无线网络中,则不太适用。无线网络有误码率高,传输延迟大的特点,如果采用AIMD原则,将会造成传输速度不必要的降低,导致传输性能下降。本实施例中采用的是创新的丢包分析方法,通过判断丢包是由高误码率引起还是网络拥塞引从而对传输速率进行调整,保障音视频流传输的流畅性。
实施例4、5应用示例:
结合大量实验得到以下述方式具体应用实施例4、5、方案的效果最佳。
在数据传输上,对于每一个音视频消息,按MTU(最大传输单元,1480字节)拆分成1个或多个数据包(DataPacket)进行传输;每个数据包通过递增的序列号进行编号,用于在接收端判断接受完整性以及数据重组恢复。接收端每收到4个数据包或者超过20毫秒将发送1个确认字符(ACK)包进行确认。
而传输过程中的拥塞控制,分慢启动与拥塞避免两个阶段,其中:
慢启动阶段
设定初始拥塞窗口(CWND-congestionwindow),默认初始拥塞窗口大小设定为16。最大拥塞窗口,鉴于目前每个终端传输带宽最多不超过8Mbps,即1MB/s,平均包大小约400字节(经验值),因此最大拥塞窗口略大于(1MB/s)/(400B/p)=2621即可。在增加拥塞窗口机制中,采用每收到1个ACK窗口大小加4的方案,综合而言大约需要800个往返延迟(RTT)达到最大拥塞窗口。
拥塞避免阶段
测量得到整条链路无缓存队列情况下的最小往返延迟RTTmin,由此可通过公式Expected=CWND/RTTmin计算得到理想的传输速率Expected。进一步的,通过公式Actual=CWND/RTT计算得到实际传输速率Actual。由此,链路队列中积压的数据包个数N可以估算为N=(Expected-Actual)*RTTmin。
结合大量实践得到,设置门限值(即阈值)thresh=3时应用效果最佳。由此在判断积压数据包个数N<thresh时,即判定为丢包是由高误码率引起的;否则判断丢包是由网络拥塞引起的,则需要降低发送速率,一种可选方案为将发送速率调整为之前的1.125倍,则传输速度降至之前的8/9。
实施例6
上述中,所述的步骤S7中对画面内容采用H.264编码;对音频内容采用AAC编码。
实施例6应用示例:
结合上述方案,当采用本实施例H.264编码画面内容时,鉴于H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。I帧包含完整画面,数据量通常比较大,P帧、B帧则相对较小。因此为了提高UDP的传输效率,通过控制每个UDP包大小不超过MTU。对于I帧这样较大的数据包就需要在服务端先进行切分,客户端接收之后再重新组装,进行复原。可确保数据量较大的视频流连续性的需求。
本发明还涉及一种应用程序远程操控系统,包括,
用户远程登录模块,用于用户通过客户端远程登录服务端与其握手建立通讯而后转到应用请求模块;
应用请求模块,用于用户远程请求开启应用程序而后转到空闲判断模块;
空闲判断模块,用于判断是否有空闲的安卓计算单元,是则转到分配模块;
分配模块,用于分配空闲的安卓计算单元给当前用户而后转到加载模块;
加载模块,用于安卓计算单元加载与对应远程登录用户的用户数据而后转到启动模块;
启动模块,用于启动对应用户远程请求的应用程序而后转到编码模块;
编码模块,用于将应用程序运行过程中的画面、音频内容编码为音视频流而后转到传输模块;
传输模块,用于将音视频流传输至远程用户的客户端而后转到展现模块;
展现模块,用于客户端展现接收到的音视频流而后转到操作接收模块;
操作接收模块,用于接收远程用户的操作指令而后转到操作判断模块;
操作判断模块,用于判断操作指令是否为退出应用程序,否则转到响应操作模块;
响应操作模块,用于响应用户操作指令,投影用户操作于应用程序上,并返回编码模块。
从上述描述可知,本发明的有益效果在于:通过在服务端设置虚拟的安卓计算环境,根据用户远程操作指令启动相应应用程序后,以串流的方式将远程安卓计算环境上运行应用程序的声音、图像传输给用户,并实时将用户对应用程序的操作反馈,从而达到应用程序投影用户端运行的目的。应用程序无需本地下载与安装,即点即用,结合不同的应用环境可实现包括:避免用户客户端下载应用耗费大量流量;客户端无需下载直接试用应用程序;避免恶意应用程序危害用户客户端;避免客户端单机硬件配置带来的应用程序体验差异;更换设备使用应用程序无需同步应用程序存储数据的有益效果。
发明方案应用示例:
在用户的手机(客户端)中安装“尝鲜”客户端,用户在展示的应用程序列表中任意选择一款应用,点击“尝鲜”按钮可以看到会先有一个由远程应用程序加载的过程,加载完毕后,云端应用程序完成启动,音视频流数据开始不断传送至本地,用户可像操作本地应用程序一般操作远程应用。
实施例1
上述中,所述的加载模块通过应用判断模块转到启动模块。
所述应用判断模块,用于判断用户远程请求开启应用程序是否于安卓计算单元上运行的安卓系统中安装,是则直接转到启动模块,否则获取应用程序并安装而后转到启动模块。
鉴于配置的安卓计算单元无法预装所有用户所需的应用程序,因此,根据用户远程请求安卓计算单元会判断是否已安装该应用,未有该运用则获取应用安装后呈现给客户端。应用程序的获取安装可从集群内的数据服务端上获取目标应用安装包后进行快速安装而实现。
实施例2
上述中,所述传输模块,用于基于UDP协议并加入ACK机制、流量控制及拥塞控制对音视频流进行传输至远程用户。
众所周知的,UDP与TCP相比,是一种无连接的、面向数据报的协议。因此更加轻量,传输速度也更快。因此本实施例中采用UDP对音视频流进行传输,可较寻常TCP传输更有传输速度的保障,从而确保客户端收到音视频流的流畅性。
但同时,由于现有的UDP协议应用中并没有TCP协议中的ACK机制以及流量控制(FlowControl)、拥塞控制(CongestionControl),因此UDP协议直接应用于本技术时候传输音视频流数据又不够可靠。因此,为了实现稳定的数据传输,本发明在UDP协议基础上增加了入ACK机制、流量控制及拥塞控制。从而提出一套有别于以往UDP传输的可靠UDP传输方案。
实施例3
上述中,所述用户远程登录模块具体包括,
初次握手单元,用于客户端发送握手数据包(handshake包)至服务端而后转到首次接收单元;
首次接收单元,用于服务端收到客户端的握手数据包而后转到生成单元;
生成单元,用于服务端生成与用户端相对应的同步cookie及密钥而后红钻到反馈单元;
反馈单元,用于服务端向客户端返回握手反馈(handshakeresponse)、同步cookie(syncookie)及密钥(secretkey)而后转到二次接收单元;
二次接收单元,用于客户端收到服务端的握手反馈、同步cookie及密钥而后转到二次握手单元;
二次握手单元,用于客户端将收到的同步cookie与握手数据包发送至服务端而后转到三次接收单元;
三次接收单元,用于服务端收到客户端的握手数据包、同步cookie而后转到有效性确认单元;
有效性确认单元,用于服务端比对收到同步cookie与下发的同步cookie,确认有效性,有效则转到通讯建立单元;
通讯建立单元,用于服务端与客户端服务端与客户端连接成功,建立通讯。
本实施例提供的是一种类似于tcp的3次握手方式,通过采用本实施例技术,可大幅提高客户端与服务端建立通讯的可靠度。
实施例4
上述中,所述编码模块具体包括,
切分单元,用于将音视频流切分为不大于网络最大传输单元(MTU)的数据包而后转到编号单元;
编号单元,用于对切分的数据包通过递增序号编号而后转到传输模块;
所述传输模块具体包括,
初始化单元,用于设定初始拥塞窗口及最大拥塞窗口而后转到发送单元;
发送单元,用于根据当前传输速度将切分的数据包依次发往客户端而后转到完整性判断单元;
完整性判断单元,用于客户端根据接收数据包的序号连续性判断接收是否完整,是则转到重组单元及确认字符发送单元;
重组单元,用于对接收的数据包根据序号进行数据重组;
确认字符发送单元,用于向服务端发送确认字符(ACK)包而后转到加速单元及判断单元;
加速单元,用于增加传输速度,返回发送单元;
判断单元,用于判断是否到达最大拥塞窗口,否则转到增加单元;
增加单元,用于增加拥塞窗口,返回发送单元。
本实施例为确保音视频流稳定、流畅传输至客户端而给出的一种具体实施例技术方案。方案中通过将大数据的音视频流切割数据包方式传送,并结合ACK机制、流量控制、拥塞控制从而在UDP协议传送基础上确保了音视频流传送的流畅性。
实施例5
上述中,所述完整性判断单元在连续性判断接收是否完整为否则转到丢包字符发送单元;
丢包字符发送单元,用于向服务端发送丢包字符包而后转到积压判断单元;
积压判断单元,用于判断积压数据包是否超过阈值,是则转到减速单元;
减速单元,用于降低传输速度,返回发送单元。
本实施例中,在拥塞控制上,传统TCP拥塞控制一般采用AIMD原则,即加法增大、乘法减小。当发生超时或丢包时,窗口立即减半,重新进入慢启动阶段。这在传统有线网络可以较好的保证流之间的公平性。而在无线网络中,则不太适用。无线网络有误码率高,传输延迟大的特点,如果采用AIMD原则,将会造成传输速度不必要的降低,导致传输性能下降。本实施例中采用的是创新的丢包分析方法,通过判断丢包是由高误码率引起还是网络拥塞引从而对传输速率进行调整,保障音视频流传输的流畅性。
实施例4、5应用示例:
结合大量实验得到以下述方式具体应用实施例4、5、方案的效果最佳。
在数据传输上,对于每一个音视频消息,按MTU(最大传输单元,1480字节)拆分成1个或多个数据包(DataPacket)进行传输;每个数据包通过递增的序列号进行编号,用于在接收端判断接受完整性以及数据重组恢复。接收端每收到4个数据包或者超过20毫秒将发送1个确认字符(ACK)包进行确认。
而传输过程中的拥塞控制,分慢启动与拥塞避免两个阶段,其中:
慢启动阶段
设定初始拥塞窗口(CWND-congestionwindow),默认初始拥塞窗口大小设定为16。最大拥塞窗口,鉴于目前每个终端传输带宽最多不超过8Mbps,即1MB/s,平均包大小约400字节(经验值),因此最大拥塞窗口略大于(1MB/s)/(400B/p)=2621即可。在增加拥塞窗口机制中,采用每收到1个ACK窗口大小加4的方案,综合而言大约需要800个往返延迟(RTT)达到最大拥塞窗口。
拥塞避免阶段
测量得到整条链路无缓存队列情况下的最小往返延迟RTTmin,由此可通过公式Expected=CWND/RTTmin计算得到理想的传输速率Expected。进一步的,通过公式Actual=CWND/RTT计算得到实际传输速率Actual。由此,链路队列中积压的数据包个数N可以估算为N=(Expected-Actual)*RTTmin。
结合大量实践得到,设置门限值(即阈值)thresh=3时应用效果最佳。由此在判断积压数据包个数N<thresh时,即判定为丢包是由高误码率引起的;否则判断丢包是由网络拥塞引起的,则需要降低发送速率,一种可选方案为将发送速率调整为之前的1.125倍,则传输速度降至之前的8/9。
实施例6
上述中,所述的编码模块,用于对画面内容采用H.264编码;对音频内容采用AAC编码。
实施例6应用示例:
结合上述方案,当采用本实施例H.264编码画面内容时,鉴于H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。I帧包含完整画面,数据量通常比较大,P帧、B帧则相对较小。因此为了提高UDP的传输效率,通过控制每个UDP包大小不超过MTU。对于I帧这样较大的数据包就需要在服务端先进行切分,客户端接收之后再重新组装,进行复原。可确保数据量较大的视频流连续性的需求。
本发明系统具体应用示例:
参见图3,本发明中所用到的安卓计算单元(AVM)为设置在云端(服务端)虚拟的安卓运行环境。
AVM在整个业务中的服务过程为:
AVM启动后向调度器注册,调度器记录AVM的mac地址
AVM周期性向调度器上报心跳,维持其在线状态与忙闲状态
AVM接收到来自调度器的启动应用指令,如目标应用本地未安装,则从集群内的数据服务器(storage)上获取目标应用安装包进行快速安装,同时加载用户历史数据。
准备完成后启动应用,这时从帧缓冲区(FrameBuffer)中可以读出图像数据。对图像数据通过视频编码技术压缩成适于被网络传输视频数据流,这里采用的是H.264编码算法。同时采样音频输出,进行音频编码,这里采用的是AAC编码算法。将编码后的音视频数据打包并发布至流媒体服务器。至此,AVM完成整个启动应用的动作。
由此,不同的用户,通过其用户终端上的APP,可以通过连接云端后,根据智能调度系统分配AVM后,在AVM的环境中运行目标应用程序,而不需要安装在自己的智能手机中。AVM可以接受用户的各类操作指令,同时将应用运行过程中的声音图像实时的进行编码压缩,传输至用户终端。
该系统中,用户终端上的APP可设计为支持Android与iOS系统,其运行于用户的智能手机、平板上。负责申请AVM,通知AVM运行相应的目标应用。开始运行后,即可接收到云端应用运行产生的音视频数据流,对数据解码渲染后,在用户的终端设备上就能同步显示云端应用运行时的声音与图像。同时,用户在本地的操作指令也被同步传输至AVM,即实现了实时交互的目标。
而智能调度系统则是对用户请求AVM的指令进行调度,为用户选择距离最近响应最快的AVM,并建立用户终端与AVM之间的数据通道,用以传输交互指令与音视频数据。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种应用程序远程操控方法,其特征在于:包括步骤,
S1)用户通过客户端远程登录服务端与其握手建立通讯;
S2)用户远程请求开启应用程序;
S3)判断是否有空闲的安卓计算单元,是则继续步骤;
S4)分配空闲的安卓计算单元给当前用户;
S5)安卓计算单元加载与对应远程登录用户的用户数据;
S6)启动对应用户远程请求的应用程序;
S7)将应用程序运行过程中的画面、音频内容编码为音视频流;
S8)将音视频流传输至远程用户的客户端;
S9)客户端展现接收到的音视频流;
S10)接收远程用户的操作指令;
S11)判断操作指令是否为退出应用程序,否则转到步骤S12;
S12)响应用户操作指令,投影用户操作于应用程序上,并返回步骤S7。
2.如权利要求1所述的应用程序远程操控方法,其特征在于:所述的步骤S6前还包括,判断用户远程请求开启应用程序是否于安卓计算单元上运行的安卓系统中安装,否则获取应用程序并安装后转到步骤S6的步骤。
3.如权利要求1所述的应用程序远程操控方法,其特征在于:所述的步骤S7中对画面内容采用H.264编码;对音频内容采用AAC编码。
4.如权利要求1所述的应用程序远程操控方法,其特征在于:所述步骤S8中,基于UDP协议并加入ACK机制、流量控制及拥塞控制对音视频流进行传输至远程用户。
5.如权利要求1所述的应用程序远程操控方法,其特征在于:所述步骤S1具体包括步骤,
S101)客户端发送握手数据包至服务端;
S102)服务端收到客户端的握手数据包;
S103)服务端生成与用户端相对应的同步cookie及密钥;
S104)服务端向客户端返回握手反馈、同步cookie及密钥;
S105)客户端收到服务端的握手反馈、同步cookie及密钥;
S106)客户端将收到的同步cookie与握手数据包发送至服务端;
S107)服务端收到客户端的握手数据包、同步cookie;
S108)服务端比对收到同步cookie与下发的同步cookie,确认有效性,有效则执行步骤S109;
S109)服务端与客户端连接成功,建立通讯。
6.如权利要求1所述的应用程序远程操控方法,其特征在于:所述步骤S7具体包括步骤,
S701)将音视频流切分为不大于网络最大传输单元的数据包;
S702)对切分的数据包通过递增序号编号;
所述步骤S8具体包括步骤,
S801)设定初始拥塞窗口及最大拥塞窗口;
S802)根据当前传输速度将切分的数据包依次发往客户端;
S803)客户端根据接收数据包的序号连续性判断接收是否完整,是则转到步骤S804及S805;
S804)对接收的数据包根据序号进行数据重组;
S805)向服务端发送确认字符包而后转到步骤S806、S807;
S806)增加传输速度,返回步骤S802;
S807)判断是否到达最大拥塞窗口,否则转到步骤S808;
S808)增加拥塞窗口,返回步骤S802。
7.如权利要求6所述的应用程序远程操控方法,其特征在于:所述步骤S803,否则转到步骤S809;
S809)向服务端发送丢包字符包;
S810)判断积压数据包是否超过阈值,是则转到步骤S811;
S811)降低传输速度,返回步骤S802。
8.一种应用程序远程操控系统,其特征在于:包括,
用户远程登录模块,用于用户通过客户端远程登录服务端与其握手建立通讯而后转到应用请求模块;
应用请求模块,用于用户远程请求开启应用程序而后转到空闲判断模块;
空闲判断模块,用于判断是否有空闲的安卓计算单元,是则转到分配模块;
分配模块,用于分配空闲的安卓计算单元给当前用户而后转到加载模块;
加载模块,用于安卓计算单元加载与对应远程登录用户的用户数据而后转到启动模块;
启动模块,用于启动对应用户远程请求的应用程序而后转到编码模块;
编码模块,用于将应用程序运行过程中的画面、音频内容编码为音视频流而后转到传输模块;
传输模块,用于将音视频流传输至远程用户的客户端而后转到展现模块;
展现模块,用于客户端展现接收到的音视频流而后转到操作接收模块;
操作接收模块,用于接收远程用户的操作指令而后转到操作判断模块;
操作判断模块,用于判断操作指令是否为退出应用程序,否则转到响应操作模块;
响应操作模块,用于响应用户操作指令,投影用户操作于应用程序上,并返回编码模块。
9.如权利要求8所述的应用程序远程操控系统,其特征在于:所述编码模块具体包括,
切分单元,用于将音视频流切分为不大于网络最大传输单元的数据包而后转到编号单元;
编号单元,用于对切分的数据包通过递增序号编号而后转到传输模块;
所述传输模块具体包括,
初始化单元,用于设定初始拥塞窗口及最大拥塞窗口而后转到发送单元;
发送单元,用于根据当前传输速度将切分的数据包依次发往客户端而后转到完整性判断单元;
完整性判断单元,用于客户端根据接收数据包的序号连续性判断接收是否完整,是则转到重组单元及确认字符发送单元;
重组单元,用于对接收的数据包根据序号进行数据重组;
确认字符发送单元,用于向服务端发送确认字符包而后转到加速单元及判断单元;
加速单元,用于增加传输速度,返回发送单元;
判断单元,用于判断是否到达最大拥塞窗口,否则转到增加单元;
增加单元,用于增加拥塞窗口,返回发送单元。
10.如权利要求9所述的应用程序远程操控方法,其特征在于:所述完整性判断单元在连续性判断接收是否完整为否则转到丢包字符发送单元;
丢包字符发送单元,用于向服务端发送丢包字符包而后转到积压判断单元;
积压判断单元,用于判断积压数据包是否超过阈值,是则转到减速单元;
减速单元,用于降低传输速度,返回发送单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510851923.2A CN105516262B (zh) | 2015-11-27 | 2015-11-27 | 应用程序远程操控方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510851923.2A CN105516262B (zh) | 2015-11-27 | 2015-11-27 | 应用程序远程操控方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105516262A true CN105516262A (zh) | 2016-04-20 |
CN105516262B CN105516262B (zh) | 2019-01-25 |
Family
ID=55723893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510851923.2A Active CN105516262B (zh) | 2015-11-27 | 2015-11-27 | 应用程序远程操控方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105516262B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106961421A (zh) * | 2017-02-17 | 2017-07-18 | 浙江大学 | 一种Android系统服务端、远程桌面音频重定向方法及系统 |
WO2017185719A1 (zh) * | 2016-04-25 | 2017-11-02 | 网宿科技股份有限公司 | 一种udp协议加速方法和系统 |
CN108574563A (zh) * | 2017-03-14 | 2018-09-25 | 深圳壹秘科技有限公司 | 一种在wifi环境中传输文件的方法及其装置 |
CN109491723A (zh) * | 2018-11-07 | 2019-03-19 | 广东小天才科技有限公司 | 一种应用程序运行方法、应用程序运行装置及移动终端 |
CN109743386A (zh) * | 2018-12-29 | 2019-05-10 | 乐蜜有限公司 | 会话请求发送方法、装置、电子设备和存储介质 |
CN110008037A (zh) * | 2019-02-28 | 2019-07-12 | 北京达佳互联信息技术有限公司 | 消息处理方法、装置及存储介质 |
WO2020233511A1 (zh) * | 2019-05-23 | 2020-11-26 | 腾讯科技(深圳)有限公司 | 一种应用启动方法、装置、计算机设备以及存储介质 |
WO2021036838A1 (zh) * | 2019-08-23 | 2021-03-04 | 西安中兴新软件有限责任公司 | 应用程序的安装方法、运行方法、电子设备、计算机可读介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436978A (zh) * | 2007-11-15 | 2009-05-20 | 盛乐信息技术(上海)有限公司 | 使用udp协议进行可靠数据传输的方法 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN102571940A (zh) * | 2011-12-26 | 2012-07-11 | Tcl集团股份有限公司 | 应用程序远程安装系统、方法、智能终端、应用服务器 |
CN102917074A (zh) * | 2012-11-09 | 2013-02-06 | 北京奇虎科技有限公司 | 一种实现服务器端浏览器的方法和服务器 |
CN103259874A (zh) * | 2013-06-05 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 应用程序的跨系统运行方法、系统及云端服务器 |
CN103916434A (zh) * | 2013-01-04 | 2014-07-09 | 中兴通讯股份有限公司 | 一种应用安装的方法、设备及系统 |
CN104202414A (zh) * | 2014-09-17 | 2014-12-10 | 合一网络技术(北京)有限公司 | 基于udp的可靠传输方法 |
CN104301800A (zh) * | 2014-09-30 | 2015-01-21 | 深圳市同洲电子股份有限公司 | 实现云端业务的方法、装置和系统 |
CN104410715A (zh) * | 2014-12-18 | 2015-03-11 | 贵州万臻时代通讯技术有限公司 | 一种实现智能移动终端在云端运行终端应用的系统和方法 |
-
2015
- 2015-11-27 CN CN201510851923.2A patent/CN105516262B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436978A (zh) * | 2007-11-15 | 2009-05-20 | 盛乐信息技术(上海)有限公司 | 使用udp协议进行可靠数据传输的方法 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN102571940A (zh) * | 2011-12-26 | 2012-07-11 | Tcl集团股份有限公司 | 应用程序远程安装系统、方法、智能终端、应用服务器 |
CN102917074A (zh) * | 2012-11-09 | 2013-02-06 | 北京奇虎科技有限公司 | 一种实现服务器端浏览器的方法和服务器 |
CN103916434A (zh) * | 2013-01-04 | 2014-07-09 | 中兴通讯股份有限公司 | 一种应用安装的方法、设备及系统 |
CN103259874A (zh) * | 2013-06-05 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 应用程序的跨系统运行方法、系统及云端服务器 |
CN104202414A (zh) * | 2014-09-17 | 2014-12-10 | 合一网络技术(北京)有限公司 | 基于udp的可靠传输方法 |
CN104301800A (zh) * | 2014-09-30 | 2015-01-21 | 深圳市同洲电子股份有限公司 | 实现云端业务的方法、装置和系统 |
CN104410715A (zh) * | 2014-12-18 | 2015-03-11 | 贵州万臻时代通讯技术有限公司 | 一种实现智能移动终端在云端运行终端应用的系统和方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185719A1 (zh) * | 2016-04-25 | 2017-11-02 | 网宿科技股份有限公司 | 一种udp协议加速方法和系统 |
US10742777B2 (en) | 2016-04-25 | 2020-08-11 | Wangsu Science & Technology Co., Ltd. | UDP protocol acceleration method and system |
CN106961421A (zh) * | 2017-02-17 | 2017-07-18 | 浙江大学 | 一种Android系统服务端、远程桌面音频重定向方法及系统 |
CN106961421B (zh) * | 2017-02-17 | 2019-10-18 | 浙江大学 | 一种Android系统服务端、远程桌面音频重定向方法及系统 |
CN108574563A (zh) * | 2017-03-14 | 2018-09-25 | 深圳壹秘科技有限公司 | 一种在wifi环境中传输文件的方法及其装置 |
CN109491723A (zh) * | 2018-11-07 | 2019-03-19 | 广东小天才科技有限公司 | 一种应用程序运行方法、应用程序运行装置及移动终端 |
CN109743386A (zh) * | 2018-12-29 | 2019-05-10 | 乐蜜有限公司 | 会话请求发送方法、装置、电子设备和存储介质 |
CN109743386B (zh) * | 2018-12-29 | 2021-11-02 | 卓米私人有限公司 | 会话请求发送方法、装置、电子设备和存储介质 |
CN110008037A (zh) * | 2019-02-28 | 2019-07-12 | 北京达佳互联信息技术有限公司 | 消息处理方法、装置及存储介质 |
WO2020233511A1 (zh) * | 2019-05-23 | 2020-11-26 | 腾讯科技(深圳)有限公司 | 一种应用启动方法、装置、计算机设备以及存储介质 |
WO2021036838A1 (zh) * | 2019-08-23 | 2021-03-04 | 西安中兴新软件有限责任公司 | 应用程序的安装方法、运行方法、电子设备、计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105516262B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105516262A (zh) | 应用程序远程操控方法及系统 | |
JP5982002B2 (ja) | トラフィックスケジューリングを使用したネットワーク帯域幅調整 | |
WO2020259448A1 (zh) | 数据的处理方法及装置、计算机可读存储介质和电子装置 | |
US10057014B2 (en) | System and method for streaming data | |
CN103945003A (zh) | 一种WebRTC客户端连接动态自适应选择的方法 | |
US8843983B2 (en) | Video decomposition and recomposition | |
EP2364017B1 (en) | Method, system and user device for obtaining key frame in streaming media service | |
EP3780440A1 (en) | Transmission control method and apparatus | |
CN108696772B (zh) | 一种实时视频的传输方法及装置 | |
CN104394486A (zh) | 一种基于云桌面的视频流处理方法及装置 | |
CN103701695A (zh) | 一种智能家居网关控制系统 | |
CN102547474B (zh) | 扩展xmpp协议融合rmtp实现视频监控系统及方法 | |
CN109862377B (zh) | 视频传输方法、装置、系统及计算机可读存储介质 | |
TW201540031A (zh) | 實現客戶端側的傳送功能的傳輸加速器 | |
CN110062268A (zh) | 一种音视频同屏播放的发送和接收处理方法及装置 | |
WO2014190642A1 (zh) | 一种媒体数据的传输方法、装置和系统 | |
GB2513345A (en) | Data communication system and method | |
CN108683653A (zh) | 一种基于WebSocket的主动式消息推送系统 | |
US9986010B2 (en) | System and method for controlling video and/or audio streams in a web browser | |
CN101557273A (zh) | 一种同时适用于有线和无线网络的实时流媒体传输的方法 | |
Lan et al. | Research on technology of desktop virtualization based on SPICE protocol and its improvement solutions | |
WO2011130962A1 (zh) | 远程处理方法、装置及系统 | |
US20130308454A1 (en) | Method and apparatus for improving http adaptive streaming performance using tcp modifications at content source | |
CN112804323B (zh) | 一种远程车载终端桌面控制系统及方法 | |
CN102263605B (zh) | 一种数据的接收方法、发送方法及其装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |