CN105577828A - 一种远程重定向方法和装置 - Google Patents
一种远程重定向方法和装置 Download PDFInfo
- Publication number
- CN105577828A CN105577828A CN201610067418.3A CN201610067418A CN105577828A CN 105577828 A CN105577828 A CN 105577828A CN 201610067418 A CN201610067418 A CN 201610067418A CN 105577828 A CN105577828 A CN 105577828A
- Authority
- CN
- China
- Prior art keywords
- tracer
- input unit
- state table
- server
- api
- 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/10—Protocols in which an application is distributed across nodes in the network
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种远程重定向方法和装置,以支持在服务器上运行多个交互式应用的客户端且不用修改客户端的现有逻辑代码。在本发明一些可行的实施方式中,方法包括:服务器获取所述用户设备侧的输入装置的控制操作;根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态;根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
Description
技术领域
本发明涉及云技术领域,具体涉及一种远程重定向方法和装置。
背景技术
随着近年来终端技术和网络带宽的高速发展,云计算技术的日趋成熟催生了云交互系统,现有的云交互系统通常包括服务器和多个用户设备,服务器可以是集群服务器,多种交互式应用都可以运行在云交互系统中。
交互式应用运行时,服务器通常需要对用户设备侧的键盘鼠标控制进行远程重定向。目前,常用以下方式对键盘和鼠标控制进行远程重定向:
一种方式是,通过对交互式应用服务器上的客户端的逻辑代码进行修改,实现键盘鼠标控制的重定向。该方式不具有通用性。
另一种方式是,通过将键盘鼠标控制在服务器的系统层进行回放实现键盘鼠标控制的重定向。该方式由于在服务器的系统层进行,对系统全局的键盘鼠标状态都有影响,当服务器上运行多个交互式应用的客户端时,多个客户端会相互影响,导致每台服务器只能提供一个客户端,不能充分利用服务器资源。
发明内容
本发明实施例提供一种远程重定向方法和装置,以支持在服务器上运行多个交互式应用的客户端且不用修改客户端的现有逻辑代码。
本发明第一方面提供一种远程重定向方法,所述方法应用于云交互系统,所述云交互系统包括服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述方法包括:服务器获取所述用户设备侧的输入装置的控制操作;根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态;根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
本发明第二方面提供一种远程重定向装置,所述装置应用于云交互系统中的服务器,所述云交互系统包括所述服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述装置包括:获取模块,用于获取用户设备侧的输入装置的控制操作;更新模块,用于根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录用户设备侧的输入装置的操作状态;消息处理模块,用于根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;重定向模块,用于将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
由上可见,在本发明的一些可行的实施方式中,服务器将获取的用户设备侧的输入装置的控制操作记录到专用的第一状态表中,同时生成控制消息传递给Tracer端,并采用Hook技术将Tracer端的用于获取键盘鼠标等输入装置的操作状态的指令重定向到所述第一状态表,实现了对键盘和鼠标等输入装置的控制操作进行远程重定向,取得了以下技术效果:
1、采用Hook技术实现重定向,不用修改Trace端的现有逻辑代码;
2、各个Tracer端使用各自的键盘鼠标状态表,且重定向过程在Tracer端内部完成,因此,各个Tracer端的远程重定向操作不会互相影响,从而支持在服务器上运行多个交互式应用的多个Tracer端。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是一种采用的重定向方法中云交互系统的架构示意图;
图2是另一种采用的重定向方法中云交互系统的架构示意图;
图3是又一种采用的重定向方法中云交互系统的架构示意图;
图4是本发明实施例提供的一种远程重定向方法的流程示意图;
图5是本发明实施例中一种云交互系统的架构示意图;
图6是本发明实施例提供的一种远程重定向装置的结构示意图;
图7是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
云交互系统包括服务器和用户设备,用于运行云游戏等交互式应用。交互式应用分别运行在服务器和用户设备的客户端通常被称为Trace端和Retrace端。其中,云游戏是指:游戏的真实客户端在云服务器上运行,同时将游戏的画面在玩家机器上进行显示,通过将玩家本地的键盘和鼠标控制远程重定向到云服务器来实现对游戏的控制。以云游戏为例,Trace端是指:运行在云游戏服务器上的游戏客户端,即云游戏的云端,执行游戏的主要逻辑运行,把与用户交互有关的图形界面,经网络传送给Retrace端。Retrace端是指:运行在用户设备上的客户端,即云游戏的用户端,用于表现Trace端的游戏图形界面,把用户的鼠标、键盘等设备输入,经网络传送给Trace端。
目前,常用以下方式对键盘和鼠标控制进行远程重定向:
第一种方法是通过对云游戏服务器上游戏客户端即Trace端进行修改,实现键盘鼠标控制的重定向。如图1所示,是采用该种方法的云交互系统的架构图。云交互系统包括服务器和用户设备,以及,分别运行在服务器和用户设备上的交互式应用的Trace端和Retrace端。
如图1所示,这种方案需要对服务器上的游戏客户端即Trace端进行修改,将用于接收Retracer端的键盘鼠标控制消息的接收模块以及处理模块集成到游戏的逻辑中,Tracer端即为修改过后的游戏客户端。此方案首先在Retracer端对系统分发的键盘鼠标控制操作进行封装,通过网络将封装之后的键盘鼠标控制发送至Tracer端,Tracer端通过网络接收键盘鼠标控制操作,并处理相应逻辑。
第二种方法是通过将键盘鼠标控制在服务器的系统层进行回放实现键盘鼠标控制的重定向。如图2和图3所示,是采用该种方法的云交互系统的架构图。云交互系统包括服务器和用户设备,以及,分别运行在服务器和用户设备上的交互式应用的Trace端和Retrace端。
如图2和图3所示,这种方案不需要对服务器上的原有游戏客户端进行修改,而是将Tracer端接收到的键盘鼠标控制消息通过SendInpu等方式转发至服务器的系统消息队列中,模拟键盘鼠标的硬件输入,从而实现键盘鼠标控制的远程重定向。图2中的方案将接收键鼠控制消息的模块独立出来,图3中的方案将接收键鼠控制消息的模块集成在Tracer端,但是对Tracer端本身没有修改。
实践发现,上述两种方法都有各自的缺陷:
第一种方法需要对现有游戏客户端进行修改,在云游戏的现有逻辑代码中加入键盘鼠标消息的接收和处理模块,不具有通用性。
第二种方法在服务器的系统层进行,对系统全局的键盘鼠标状态都有影响,当服务器上运行多个Tracer端时,多个Tracer端会相互影响,导致每台服务器只能提供一个Tracer端,不能充分利用服务器资源。
为解决上述问题,本发明实施例提供一种远程重定向方法和装置,用于支持在服务器上运行多个Trace端且不用修改Trace端的现有逻辑代码。下面通过具体实施例,分别进行详细的说明。
(实施例一、)
请参考图4,本发明实施例提供的一种远程重定向方法,所述方法应用于云交互系统,所述云交互系统包括服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述云交互系统运行的交互式应用可以是云游戏,此时云交互系统也可以称为云游戏系统,本文以云游戏系统为例进行说明。
所述方法可以包括:
110、所述服务器获取所述用户设备侧的输入装置的控制操作。
所述服务器可以通过接收所述用户设备发送的、封装有所述用户设备侧的输入装置的控制操作的消息,并解析收到的消息,来获取所述用户设备侧的输入装置的控制操作。所述输入装置可以包括键盘、鼠标、手柄、触摸屏等装置中的一种或多种。
120、根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态。
本发明实施例中,在每个Tracer端增加一个状态表,该状态表专门用于记录所述用户设备侧的输入装置的操作状态。以第一Tracer端为例,增加的状态表记为第一状态表。第一Tracer端每次获取到用户设备侧的输入装置的控制操作,都对第一状态表进行更新,使得Tracer端和Retracer端各自记录的输入装置例如键盘鼠标的操作状态同步。该第一状态表可以是仅用于记录用户设备侧的输入装置的操作状态,而不记录其它输入装置的操作状态。
130、根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端。
服务器每次获取到用户设备侧的输入装置的控制操作,除了更新第一状态表,同时,还根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端,具体的,可以传递给所述第一Tracer端的消息处理函数,用于被第一Tracer端的处理逻辑处理。
140、将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
本发明实施例中,对第一Tracer端的用于获取输入装置例如键盘鼠标的操作状态的指令采用Hook技术进行重定向到所述第一状态表。第一Tracer端进行逻辑处理时,根据所述控制消息和所述第一状态表进行。
其中,所说的指令具体可以是API(ApplicationProgrammingInterface,应用程序编程接口)。所说的Hook技术是指:把原本的函数执行过程替换成自定义的函数,Hook可以接触到需要修改的Api函数入口点,改变它的地址指向新的自定义的函数。
为了实现将获取输入装置的操作状态的指令Hook到第一状态表,可以采用双重重定向,首先Hook到游戏的主线程中,再Hook到用于获取输入装置的操作状态的API。于是,一些实施例中,本步骤具体可以包括:
采用Hook技术注入到所述第一Tracer端的主线程;
在所述主线程中,再对所述第一Tracer端的用于获取输入装置的操作状态的API进行Hook,使得所述第一Tracer端的用于获取输入装置的操作状态的指令被重定向到所述第一状态表。其中,所述系统API例如可以是用于显示鼠标的API,或者也可以采用其它的API。
其中,采用Hook技术注入到第一Tracer端的主线程的步骤具体可以包括:对所述第一Tracer端的主线程会调用的一个系统API进行Hook;当所述系统API被调用时,注入到所述主线程。
值得说明的是,这里可以有两次Hook,第一次Hook是对游戏主线程会调用的系统API进行Hook,目的是注入游戏主线程;第二次Hook是当成功注入游戏主线程之后,在游戏主线程中对调用的系统获取输入装置的操作状态例如获取键鼠状态的API进行Hook,目的是重定向到Tracer端保存的第一状态表。
这里所说的系统API是指游戏主线程一定会调用到的系统API,这是因为不掌握游戏主进程的源代码的基础上,要注入到游戏主线程中,只能预判游戏主线程一定会调用到什么系统API,通过对该系统API的HOOK,进而注入游戏主线程,达到对游戏主线程的控制。
举例来说,所述系统API可以是用于显示光标的API,即ShowCursorAPI;或者用于创建窗口的API,即,CreateWindowAPI。但必须注意,并不限于以上列举的两种API。
由上可见,本发明实施例中,提供了一种远程重定向方法,该方法采用Hook技术实现重定向,不用修改Trace端的现有逻辑代码;各个Tracer端使用各自的键盘鼠标状态表,且重定向过程在Tracer端内部完成,因此,各个Tracer端的远程重定向操作不会互相影响,从而支持在服务器上运行多个交互式应用的多个Tracer端。
请参考图5,是本发明实施例中一种云交互系统的架构图。云交互式系统可以理解为是云游戏系统。
下面,结合系统架构图对本发明实施例技术方案做进一步详细的说明:
如图5所示,用户设备上运行有Retracer端,服务器上可运行有多个Tracer端。用户设备和服务器都有各自的输入装置,所述输入装置可以包括键盘、鼠标、手柄、触摸屏等装置中的一种或多种。下面以输入装置包括键盘和鼠标为例,用“键盘鼠标”指代输入装置,“键盘鼠标”可以理解为键盘和/或鼠标。但需要说明的是,“键盘鼠标”也可以替换成其它任意的输入装置。
在用户设备侧,Retracer端可以通过消息处理函数,从系统消息队列中,获取和记录用户对Retracer端的键盘鼠标控制操作。Retracer端可以通过消息封装函数例如键鼠消息封装函数,将获取的键盘鼠标控制操作,封装成消息,并发送到Tracer端。
在服务器侧,Tracer端可以通过键鼠消息解析函数,接收并解析Retracer端发送的消息,获取用户设备侧的键盘鼠标控制操作,并重新生成对应的控制消息传递给消息处理函数。
本发明实施例中,在Tracer端利用一个专用的状态表来记录所述用户设备侧的键盘鼠标的操作状态,即上文所述的第一状态表,Tracer端每次获取到用户设备侧的键盘鼠标控制操作,都对第一状态表进行更新,保证该第一状态表和用户设备侧的键盘鼠标的操作状态同步。
在服务器侧,还对Tracer端的用于获取键盘鼠标状态的API进行Hook,将Tracer端处理逻辑中获取键盘鼠标的操作状态重定向到Tracer端保存的第一状态表记录的用户设备侧的键盘鼠标的操作状态。
于是,Tracer端的处理逻辑可以从消息处理函数获取控制消息,从第一状态表中获取对应的用户设备侧的键盘鼠标的操作状态,执行相应的逻辑处理。通过采用专用的第一状态表,不用修改Tracer端的逻辑代码,不会影响同意服务器上的其它Tracer端,可以实现对键盘各种组合键控制操作的识别应用。
采用本发明技术方案,云游戏在启动初始化过程中,需要执行以下操作:在Tracer端对获取键盘鼠标操作状态的API进行Hook,将读取进程键盘鼠标操作状态的操作重定向到Tracer端保存的和用户设备侧同步的键盘鼠标状态表,即第一状态表;在Retracer端通过系统消息处理函数对键盘鼠标控制消息进行记录,并在封装之后通过网络转发至Tracer端。
需要指出的是,游戏处理逻辑中在接收到键盘鼠标控制消息之后会检测系统当前的键盘鼠标操作状态,根据键盘鼠标操作状态和键盘鼠标控制消息进行逻辑处理,所以,对系统获取键盘鼠标操作状态的API的Hook必须在游戏的主线程中进行,因此可采用双重Hook,先Hook游戏主线程会调用的系统API,当该系统API被调用时,成功注入到主线程中,再在主线程中,对系统获取键盘鼠标操作状态的API进行Hook。
由上可见,本发明实施例提供的远程重定向方法,可以取得以下技术效果:
可以减少正常游戏云游戏化的开销,不需要修改原有游戏客户端的游戏逻辑,通过Hook注入技术,在云游戏服务器上的游戏客户端可以正常响应用户针对游戏的所有键盘鼠标操作,使得更多的游戏可以花费很小的代价云游戏化,推动云游戏产业的发展。
可以提高云游戏服务器的资源利用率,通过Hook技术实现可以在一台云游戏服务器上支持多个Tracer端,资源利用率可以提高很多倍,在云游戏大规模部署之后极大的节约了云游戏在服务器上面的开销。
另外,本发明技术方案不仅仅适用于云游戏,其它的交互式应用例如在服务器运行真实客户端,在用户设备有镜像程序这种架构的应用可以应用本发明技术方案。
(实施例二、)为了更好的实施本发明实施例的上述方案,下面还提供用于配合实施上述方案的相关装置。
请参考图6,本发明实施例提供远程重定向装置600,所述装置600应用于云交互系统中的服务器,所述云交互系统包括所述服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述装置600可以包括:
获取模块610,用于获取所述用户设备侧的输入装置的控制操作;
更新模块620,用于根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态;
消息处理模块630,用于根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;
重定向模块640,用于将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
在一些实施例中,所述消息处理模块630,具体用于将所述控制消息传递给所述第一Tracer端的消息处理函数。
在一些实施例中,所述重定向模块640包括:
第一重定向单元,用于采用Hook技术注入到所述第一Tracer端的主线程;
第二重定向单元,用于在所述主线程中,再对所述第一Tracer端的用于获取输入装置的操作状态的API进行Hook,使得所述第一Tracer端的用于获取输入装置的操作状态的指令被重定向到所述第一状态表。
在一些实施例中,所述第一重定向单元,具体用于对所述第一Tracer端的主线程会调用的一个系统应用程序编程接口API进行Hook;当所述系统API被调用时,注入到所述主线程。
在一些实施例中,所述系统API是用于显示光标的API,或者用于创建窗口的API。
在一些实施例中,所述获取模块610,具体用于接收所述用户设备发送的、封装有所述用户设备侧的输入装置的控制操作的消息。
可以理解,本发明实施例远程重定向装置的各个功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。该装置例如可以是服务器。
由上可见,在本发明的一些可行的实施方式中,服务器将获取的用户设备侧的输入装置的控制操作记录到专用的第一状态表中,同时生成键盘鼠标控制消息传递给Tracer端,并采用Hook技术将Tracer端的用于获取键盘鼠标的操作状态的指令重定向到所述第一状态表,实现了对键盘和鼠标等输入装置的控制操作进行远程重定向,并取得了以下技术效果:
1、采用Hook技术实现重定向,不用修改Trace端的现有逻辑代码;
2、各个Tracer端使用各自的键盘鼠标状态表,且重定向过程在Tracer端内部完成,因此,各个Tracer端的远程重定向操作不会互相影响,从而支持在服务器上运行多个交互式应用的多个Tracer端。
从而,可以减少正常游戏云游戏化的开销,不需要修改原有游戏客户端的游戏逻辑,通过Hook注入技术,在云游戏服务器上的游戏客户端可以正常响应用户针对游戏的所有键盘鼠标操作,使得更多的游戏可以花费很小的代价云游戏化,推动云游戏产业的发展。
可以提高云游戏服务器的资源利用率,通过Hook技术实现可以在一台云游戏服务器上支持多个Tracer端,资源利用率可以提高很多倍,在云游戏大规模部署之后极大的节约了云游戏在服务器上面的开销。
另外,本发明技术方案不仅仅适用于云游戏,其它的交互式应用例如在服务器运行真实客户端,在用户设备有镜像程序这种架构的应用可以应用本发明技术方案。
(实施例三、)本发明实施例还提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序当被包括一个或多个处理器的服务器执行时使所述服务器执行如上文方法实施例所述的远程重定向方法。
(实施例四、)请参考图7,本发明实施例还提供一种服务器700,可包括:
处理器710,存储器720,通信接口730,总线740;所述处理器710,存储器720,通信接口730通过所述总线740相互的通信;所述通信接口730,用于接收和发送数据;所述存储器720用于存储程序750;所述处理器710用于执行所述存储器中的所述程序。当所述服务器700运行时,所述处理器710执行所述存储器720存储的所述程序750,以使所述服务器700执行如上文方法实施例所述的远程重定向方法。
具体的,通信接口730可用于获取所述用户设备侧的输入装置的控制操作,处理器710可用于根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态,所述第一状态表可存储于存储器720中,处理器710可用于还根据所述控制操作生成相应的控制消息,通信接口730可用于将所述控制消息传递给所述第一Tracer端,处理器710可用于将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
其中,所述总线可以是工业标准体系结构(IndustryStandardArchitecture,简称为ISA)总线或外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线中的一种或多种。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以包含高速RAM(RamdomAccessMemory)存储器。可选地,所述存储器还可以还包括非易失性存储器(non-volatilememory)。例如所述存储器可以包括磁盘存储器。
所述处理器可以是一个中央处理器(CentralProcessingUnit,简称为CPU),或者所述处理器可以是特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者所述处理器可以是被配置成实施本发明实施例的一个或多个集成电路。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的远程重定向方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种远程重定向方法,其特征在于,所述方法应用于云交互系统,所述云交互系统包括服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述方法包括:
所述服务器获取所述用户设备侧的输入装置的控制操作;
根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态;
根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;
将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
2.根据权利要求1所述的方法,其特征在于,所述将所述控制消息传递给所述第一Tracer端包括:
将所述控制消息传递给所述第一Tracer端的消息处理函数。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表包括:
采用Hook技术注入到所述第一Tracer端的主线程;
在所述主线程中,再对所述第一Tracer端的用于获取输入装置的操作状态的API进行Hook,使得所述第一Tracer端的用于获取输入装置的操作状态的指令被重定向到所述第一状态表。
4.根据权利要求3所述的方法,其特征在于,所述采用Hook技术注入到所述第一Tracer端的主线程包括:
对所述第一Tracer端的主线程会调用的一个系统应用程序编程接口API进行Hook;当所述系统API被调用时,注入到所述主线程。
5.根据权利要求4所述的方法,其特征在于,
所述系统API是用于显示光标的API,或者用于创建窗口的API。
6.根据权利要求1-5任一所述的方法,其特征在于,所述服务器获取所述用户设备侧的输入装置的控制操作包括:
所述服务器接收所述用户设备发送的、封装有所述用户设备侧的输入装置的控制操作的消息。
7.一种远程重定向装置,其特征在于,所述装置应用于云交互系统中的服务器,所述云交互系统包括所述服务器和用户设备,所述服务器中运行有至少一个交互式应用的至少一个Tracer端,第一Tracer端是所述至少一个Tracer端中的任一Tracer端;所述装置包括:
获取模块,用于获取所述用户设备侧的输入装置的控制操作;
更新模块,用于根据所述控制操作更新第一状态表,所述第一状态表用于所述第一Tracer端记录所述用户设备侧的输入装置的操作状态;
消息处理模块,用于根据所述控制操作生成相应的控制消息,将所述控制消息传递给所述第一Tracer端;
重定向模块,用于将所述第一Tracer端的用于获取输入装置的操作状态的指令,采用Hook技术重定向到所述第一状态表,以便所述第一Tracer端根据所述控制消息和所述第一状态表进行逻辑处理。
8.根据权利要求6所述的装置,其特征在于:。
所述消息处理模块,具体用于将所述控制消息传递给所述第一Tracer端的消息处理函数。
9.根据权利要求6所述的装置,其特征在于,所述重定向模块包括:
第一重定向单元,用于采用Hook技术注入到所述第一Tracer端的主线程;
第二重定向单元,用于在所述主线程中,再对所述第一Tracer端的用于获取输入装置的操作状态的API进行Hook,使得所述第一Tracer端的用于获取输入装置的操作状态的指令被重定向到所述第一状态表。
10.根据权利要求9所述的装置,其特征在于,
所述第一重定向单元,具体用于对所述第一Tracer端的主线程会调用的一个系统应用程序编程接口API进行Hook;当所述系统API被调用时,注入到所述主线程。
11.根据权利要求10所述的装置,其特征在于,
所述系统API是用于显示光标的API,或者用于创建窗口的API。
12.根据权利要求7-11任一所述的装置,其特征在于,
所述获取模块,具体用于接收所述用户设备发送的、封装有所述用户设备侧的输入装置的控制操作的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067418.3A CN105577828B (zh) | 2016-01-29 | 2016-01-29 | 一种远程重定向方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067418.3A CN105577828B (zh) | 2016-01-29 | 2016-01-29 | 一种远程重定向方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105577828A true CN105577828A (zh) | 2016-05-11 |
CN105577828B CN105577828B (zh) | 2019-01-25 |
Family
ID=55887472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610067418.3A Active CN105577828B (zh) | 2016-01-29 | 2016-01-29 | 一种远程重定向方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105577828B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052377A (zh) * | 2017-12-29 | 2018-05-18 | 腾讯科技(深圳)有限公司 | 基于云的输入处理方法、装置、服务器和存储介质 |
CN109871285A (zh) * | 2017-12-05 | 2019-06-11 | 北京嘀嘀无限科技发展有限公司 | 动态调整方法、装置、服务器、移动终端和可读存储介质 |
CN110147233A (zh) * | 2019-05-27 | 2019-08-20 | 眸芯科技(上海)有限公司 | 简化集成电路专业工具的方法及应用 |
CN112791387A (zh) * | 2021-01-08 | 2021-05-14 | 杭州雾联科技有限公司 | 一种基于鼠标和键盘的数据处理方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7703081B1 (en) * | 2005-09-22 | 2010-04-20 | Symantec Corporation | Fast system call hooking on x86-64 bit windows XP platforms |
CN103685508A (zh) * | 2013-08-28 | 2014-03-26 | 东方证券股份有限公司 | 基于云桌面平台低带宽模式下的视频图文传输调用方法 |
CN103888485A (zh) * | 2012-12-19 | 2014-06-25 | 华为技术有限公司 | 云计算资源的分配方法、装置及系统 |
US20140344335A1 (en) * | 2013-05-16 | 2014-11-20 | Toshiba Global Commerce Solutions Holdings Corporation | Detecting and managing a loss of connectivity with a remote server |
CN104216783A (zh) * | 2014-08-20 | 2014-12-17 | 上海交通大学 | 云游戏中虚拟gpu资源自主管理与控制方法 |
-
2016
- 2016-01-29 CN CN201610067418.3A patent/CN105577828B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7703081B1 (en) * | 2005-09-22 | 2010-04-20 | Symantec Corporation | Fast system call hooking on x86-64 bit windows XP platforms |
CN103888485A (zh) * | 2012-12-19 | 2014-06-25 | 华为技术有限公司 | 云计算资源的分配方法、装置及系统 |
US20140344335A1 (en) * | 2013-05-16 | 2014-11-20 | Toshiba Global Commerce Solutions Holdings Corporation | Detecting and managing a loss of connectivity with a remote server |
CN103685508A (zh) * | 2013-08-28 | 2014-03-26 | 东方证券股份有限公司 | 基于云桌面平台低带宽模式下的视频图文传输调用方法 |
CN104216783A (zh) * | 2014-08-20 | 2014-12-17 | 上海交通大学 | 云游戏中虚拟gpu资源自主管理与控制方法 |
Non-Patent Citations (1)
Title |
---|
张超: ""基于虚拟化的云游戏GPU资源自适应调度策略"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871285A (zh) * | 2017-12-05 | 2019-06-11 | 北京嘀嘀无限科技发展有限公司 | 动态调整方法、装置、服务器、移动终端和可读存储介质 |
CN108052377A (zh) * | 2017-12-29 | 2018-05-18 | 腾讯科技(深圳)有限公司 | 基于云的输入处理方法、装置、服务器和存储介质 |
CN108052377B (zh) * | 2017-12-29 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 基于云的输入处理方法、装置、服务器和存储介质 |
CN110147233A (zh) * | 2019-05-27 | 2019-08-20 | 眸芯科技(上海)有限公司 | 简化集成电路专业工具的方法及应用 |
CN112791387A (zh) * | 2021-01-08 | 2021-05-14 | 杭州雾联科技有限公司 | 一种基于鼠标和键盘的数据处理方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105577828B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542399B (zh) | 软件开发方法、装置、终端设备及计算机可读存储介质 | |
CN109032691B (zh) | 一种小程序运行方法、装置及存储介质 | |
CN109471626B (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
CN108235759B (zh) | 基于多操作系统的输入处理方法、装置及电子设备 | |
CN103888485A (zh) | 云计算资源的分配方法、装置及系统 | |
CN105577828A (zh) | 一种远程重定向方法和装置 | |
CN104899039A (zh) | 用于在终端设备上提供截屏服务的方法和装置 | |
US20220043898A1 (en) | Methods and apparatuses for acquiring information | |
CN110989487B (zh) | 工业服务器的plc初始化方法、装置及可读存储介质 | |
CN110007936B (zh) | 数据处理方法和装置 | |
WO2017166448A1 (zh) | 内核漏洞修复方法和装置 | |
CN108052377B (zh) | 基于云的输入处理方法、装置、服务器和存储介质 | |
CN110795328A (zh) | 一种接口测试方法和装置 | |
CN110221840B (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN113468067B (zh) | 应用程序的调试方法、装置、电子设备和计算机可读介质 | |
US10289391B2 (en) | Optimization of software symbol tables | |
US20170188214A1 (en) | Method and electronic device for sharing multimedia information | |
CN103514004A (zh) | Windows系统下的系统环境管理方法及装置 | |
CN114443171A (zh) | 可配置化服务平台及可配置化服务实现方法 | |
CN111367799B (zh) | 定位源代码崩溃位置的方法、装置、介质及电子设备 | |
CN113254825A (zh) | 页面生成的方法、装置、电子设备和存储介质 | |
CN111385661B (zh) | 语音控制全屏播放的方法、装置、终端及存储介质 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN110780864A (zh) | 类方法替换的控制方法及装置、存储介质及电子设备 | |
CN113051149A (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 |