CN105051713B - 基于网络的键盘、视频和鼠标(kvm)重定向的方法及*** - Google Patents
基于网络的键盘、视频和鼠标(kvm)重定向的方法及*** Download PDFInfo
- Publication number
- CN105051713B CN105051713B CN201380074738.6A CN201380074738A CN105051713B CN 105051713 B CN105051713 B CN 105051713B CN 201380074738 A CN201380074738 A CN 201380074738A CN 105051713 B CN105051713 B CN 105051713B
- Authority
- CN
- China
- Prior art keywords
- video
- frame
- pixel
- image
- browser program
- 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.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明的某些方面指向执行由基板管理控制器(BMC)实施的基于网络的键盘、视频和鼠标(KVM)重定向的方法。所述方法包括:(a)在所述BMC上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动可绘制区域,并与所述网络服务器建立网络套接字连接;(c)生成代表所述第二视频帧的已处理的图像;(d)在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及(e)将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。
Description
相关申请的交叉引用
本PCT申请要求申请日为2013年3月15日、申请序列号为No.13/839,151、题为“基于网络的键盘、视频和鼠标(KVM)重定向的***和方法及其应用”,且发明人为姗卓依·迈迪(Sanjoy Maity)、巴斯卡尔·帕斯本(Baskar Parthiban)、山维纳斯·克里斯夫(Samvinesh Christopher)以及瓦拉达查理·苏丹·阿雅曼(Varadachari Sudan Ayanam)的美国专利申请的优先权和权益,该申请在此全文引用,以供参考。
技术领域
本发明涉及计算机***领域,并尤其涉及一种主机和计算设备之间的基于网络的键盘、视频和鼠标(KVM)重定向的***和方法。
背景技术
在此描述的背景技术是用来概述本申请的内容。在该背景技术部分中描述的当前提及的发明人的工作,以及不可认定为在本申请提交日期的现有技术的说明书的方面,既没有明确地也没有隐含地承认为本申请的现有技术。
通常,用语“计算机***”指的是独立***或多个互联***,例如客户端-服务器网络。不管其实施如何,构成计算机***的各种部件通常在由性能协议或标准所定义的一系列参数范围内进行操作的。例如,通常对计算机机箱的温度进行监控,以在***可能超过某一预设温度读数时检测其时间周期(periods in time)。计算机***内被监控的其他形式的信息包括但不限于,与位于***的基板上的半导体器件有关的电压、位于基板上或位于***机箱内的散热风扇的速度(例如,单位为rpm),以及在硬盘驱动器内或光驱内的主轴电机的速度。
使用不同类型的传感器来检测与计算机***及其组成部件相关的运行及性能相关参数。参见上述提供的例子,这些传感器包括温控器、电压表和速度计等。计算机***典型地采用一个或多个管理模块来辅助采集和分析的各种传感器所感应到的用于测量***内的操作和性能相关参数信息。这些管理模块可以为软件或硬件成分,但典型地既包括软件又包括硬件成分。一个这样的管理模块称为“基板管理控制器”(BMC)。该BMC为计算机***的微处理器,并具有指定数量的触针(contact pin),通过该触针可以接收到由各种传感器感应的信息以供BMC分析。为了执行该分析,BMC通过固件(fireware)进行编程,以执行与***的监控和恢复有关的程序。通过该固件对BMC进行编程,以监控计算机***内感应到的各种运行和性能相关参数,并分析该信息以确定当前是否存在任意的感应参数超出预期或建议的工作范围,这些情况的发生俗称“事故”。
BMC可以执行键盘、视频和鼠标(KVM)的重定向。然而,在该KVM重定向的执行中仍存在未解决的需求。
发明内容
本申请的某些方面涉及一种执行键盘、视频和鼠标(KVM)重定向的方法。所述方法由由基板管理控制器(BMC)实施。所述方法包括:(a)在所述BMC上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动(initiate)可绘制区域,并与所述网络服务器建立网络套接字连接;(c)生成代表所述第二视频帧的已处理的图像;(d)在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及(e)将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。在某些实施例中,所述方法包括:(a)在所述BMC上,将所述第二视频帧与所述第一视频帧进行比较,以确定所述第二视频帧的第一像素;其中,所述第一像素具有与所述第一视频帧的对应像素的像素值不同的像素值;(b)生成第一贴片图像和相关的贴片参数,所述第一贴片图像代表包括所述第一像素的所述第二视频帧的一部分。在某些实施例中,所述方法包括:将所述第一贴片图像和贴片参数通过所述网络套接字连接发送至所述浏览器程序。在某些实施例中,对所述网页进行编程以指示所述浏览器程序将所述第一贴片图像在可绘制区域上,修补在所述贴片参数指明的位置处。
在某些实施例中,所述方法包括:(a)生成代表所述第一视频帧的重定向图像;以及(b)将所述重定向图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以在所述可绘制区域显示所述重定向图像。其中,所述可绘制区域为由HTML5定义的画布。所述网页被编程以指示所述浏览器程序在所述画布上显示所述重定向图像,并将所述第一贴片图像修补在所述已显示的重定向图像上。
在某些实施例中,所述方法还包括:(a)将所述第二视频帧分成多个贴片;(b)将所述第二视频帧的每个像素的像素值与所述第一视频帧的对应像素的像素值进行比较;(c)确定所述第二视频帧中多个改变的像素;其中,所述改变的像素中的每个的像素值均与每个所述改变的像素在所述第一视频帧中的对应像素的像素值不同;(d)确定多个改变的贴片;其中,所述改变的贴片中的每个包括至少一个改变的像素;(e)生成多个改变的贴片图像;其中,每一所述改变的贴片图像分别代表所述改变贴片中的一个;以及(f)将所述多个改变的贴片图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以指示所述浏览器程序将所述改变的贴片图像修补在所述绘制区域上。
在某些实施例中,所述方法还包括:(a)确定所述第二视频帧上每个改变的贴片的位置;以及(b)根据由每个所述改变的贴片图像所代表的各个改变的贴片的位置,生成每个所述改变的贴片图像的贴片参数。所述网页被编程以指示所述浏览器程序将每个所述改变的贴片图像在所述绘制区域上修补在由所述贴片参数所指明的位置处。所述贴片参数包括指明所述可绘制区域位置的坐标、每个所述改变的贴片图像的宽度,以及每个所述改变的贴片图像的高度。所述网页被编程以指示所述浏览器程序捕捉发生在所述可绘制区域上的第一事件,并将所述第一事件的事件数据发送至所述网络服务器;所述第一事件为鼠标事件或键盘事件。所述方法包括:(a)通过所述网络套接字连接接收来自所述浏览器程序的事件数据;(b)生成所述主机可兼容的并代表所述事件数据的输入数据;以及(c)将所述输入数据发送至所述主机的输入控制器。在某些实施例中,所述第一事件为鼠标事件,所述事件数据指明所述可绘制区域上发生事件的事件位置。所述方法包括:(a)根据所述事件位置确定所述主机的位置坐标;以及(b)生成代表所述鼠标事件以及位置坐标的输入数据。在某些实施例中,所述第一事件为键盘事件;其中,所述事件数据指明按键。所述方法包括:生成代表所述按键的输入数据。
在某些实施例中,所述方法包括:(a)根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及(b)根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。在某些实施例中,所述方法还包括对所述已编码的图像在所述网络服务器上进行压缩,以生成已处理的图像。所述网页被编程以指示所述浏览器程序调用JavaScript路径来对所述已处理的图像进行解压和解码,以在所述可绘制区域中显示已解压和已解码的图像。
本申请的某些方面涉及另一种执行键盘、视频和鼠标(KVM)重定向的方法。所述方法由由基板管理控制器(BMC)实施。所述方法包括:(a)在所述BMC上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;(c)生成代表所述第二视频帧的已处理的图像;(d)将Java对象存储在所述网络服务器中;其中,所述网页被编程以指示所述浏览器程序下载所述Java对象,其中所述Java对象定义了Java显示器;(e)在所述BMC和所下载的所述Java对象之间建立网络连接;其中所述Java对象在所述计算设备的Java虚拟机上执行;以及(f)将所述已处理的图像发送至已执行的所述Java对象。
在某些实施例中,所述方法还包括:(a)根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及(b)根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。在某些实施例中,所述方法还包括:(a)在所述网络服务器上压缩所述已编码的图像,以生成已处理的图像;(b)在所述已执行的Java对象上对所述已处理的图像进行解压和解码;以及(c)将所述已解压和已解码的图像显示在所述Java显示器上。
本申请的某些方面涉及一种非短暂性计算机存储介质。所述非短暂性计算机存储介质存储计算机可执行指令。当所述计算机可执行指令被基板管理控制器(BMC)计算机的处理器执行时,所述指令导致所述主机:(a)接收从所述主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动可绘制区域,并与所述网络服务器建立网络套接字连接;(c)生成代表所述第二视频帧的已处理的图像;(d)在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及(e)将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。
根据以下提供的具体的说明书,本申请的应用前景变得非常清楚。应理解,具体的说明书和特定的例子是只是用来阐述本申请并不是用于限制本申请的保护范围。
附图说明
从详细描述的说明书和附图中可更全面地理解本申请,其中:
图1示意性地描述了本发明一个实施例提供的基于网络的KVM重定向***;
图2示意性地描述了本发明一个实施例提供的网络套接字连接(web socket);
图3A举例描述了使用GET指令的HTTP请求和HTTP应答;
图3B举例描述了本发明一个实施例提供的网络套接字握手请求和应答;
图4示意性地描述了本发明一个实施例提供的基于网络的KVM重定向;
图5示意性地描述了本发明一个实施例提供的基于网络的视频重定向;
图6示意性地描述了本发明一个实施例提供的视频帧和贴片(tile);
图7A示意性地描述了本发明一个实施例提供的视频重定向的流程;
图7B示意性地描述了本发明另一实施例提供的视频重定向的流程;
图8示意性地描述了本发明另一实施例提供的基于网络的视频重定向的;以及
图9示意性地描述了本发明另一实施例提供的视频重定向的流程。
具体实施方式
以下例子更加详细地描述了本申请,这些例子只是用作说明性的,因为这些例子的各种修改和变形对于本领域技术人员来说是显而易见的。本发明不同的实施例此时将详细地描述。关于附图,整个附图中类似的编号,如果有的话,表示类似的结构。在此处的说明书中并贯穿后续的权利要求书,除非文中明确表明,“一”和“所述”的含义包含引用复数。同样,在此处的说明书中并贯穿后续的权利要求书,除非文中明确表明,“在…中”的含义包括“在…中”和“在…上”。而且,在说明书中使用的标题和子标题是用来方便读者,对于本申请的范围没有任何影响。另外,下面将更具体地定义说明书中使用的一些用语。
在本申请正文和用语使用的特定内容中,本说明书中使用的用语一般都是它们在本技术领域的通常含义。下面或说明书的其他地方将讨论一些本申请中使用的某些用语,以对本发明说明书的实践者(preactitioner)提供指引。为了方便,某些用语将会被强调,例如使用斜体和/或引号。使用强调并不影响用语的范围和含义;不管是否被强调,在相同的内容中,用语的范围和含义相同。应理解,相同的事情可以有多种不同的表述。因此,在此讨论的任何一个或多个用语可有替代的语言和同义词,用语是否在此提及或讨论并没有任何重大的影响。提供了某些用语的同义词。列举的一个或多个同义词并不排除还可以使用其他同义词。本说明书中任何地方使用的例子,包括此处讨论的任何用语的例子只是用来说明,并不是用于限制本申请或任何列举的用语的范围和含义。同样地,本申请并不能被限制为说明书中给出的各种实施例。
除非明确说明,此处使用的所有技术和科技术语具有本申请所述领域技术人员所理解的常用含义。如有矛盾,本申请文件,包括定义,将会控制。
通常,本申请使用的“左右”、“大约”或“近似”是指相对于给定值或范围偏差在20%以内,优选10%以内、更优选5%以内。此处给出的数字量是近似的,意味着如果没有明确指出,那么“左右”、“大约”或“近似”这些用语是可以推测的。
此中使用的“多个”意思是两个及以上。
此中使用的用语“包括”、“包含”、“具有”、“含有”等是表示开放式的,意思是包括但不限于。
此中使用的短语A、B和C中的至少一个应理解为使用非排他的“或”逻辑的逻辑(A或B或C)。应理解,方法中包括的一个或多个步骤在不改变本申请的原理的前提下可以按照不同的顺序(或同时地)执行。
此中使用的用语模块可指一部分或包括专用集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、执行代码的处理器(共享的、专用的或集群的)、提供所描述功能的其他合适的硬件组合,或以上部分或全部的组合,例如片上***。用语模块可包括存储处理器执行的代码的存储器(共享的、专用的货集群的)。
上述术语代码可包括软件、固件和/或微码,可指程序、线程、函数、类别和/或对象。上述术语共享的,意味着来自多个模块的一些或全部代码可使用单个(共享的)处理器执行。另外,来自多个模块的一些或全部代码可存储在单个(共享的)内存(memory)中。上述术语集群的,意味着来自单个模块的一些或全部代码可被一群处理器执行。另外,来自单个模块的一些或全部代码可存储在一群内存中。
此中描述的装置和方法可通过又一个或多个处理器执行的一个或多个计算机程序来实施。计算机程序包括存储在非暂时有形的计算机可读介质中的处理器可执行的指令。计算机指令还可包括所存储的数据。非暂时有形的计算机可读介质的非限制性例子包括非易失性存储器、磁存储器和光存储器。
以下将结合附图对本申请进行更加全面的描述,其中给出了本申请的实施例。然后,本申请可以各种不同的形式实施,而并不限于此中给出的实施例;更准确地说,这些实施例是用于使本申请能被完全和透彻地理解,并能使本领域技术人员完全明白本申请的范围。类似的标号表示类似的部件。
本申请涉及计算机***。如附图中所描述的,计算机组件可包括用实线框表示物理的硬件部件和用虚线框表示的软件部件。本领域技术人员应理解,除非明确表示,这些计算机组件可实施成,但不限于软件形式、固件形式或硬件形式,或者是它们的组合。
图1示意性地描述了本发明一个实施例提供的基于网络的KVM重定向***。如图1所示,***100包括主机110,和通过网络130与主机110连接的计算设备140。***100可并入一个以上互联***,例如客户端-服务器网络。网络130可为有线或无线网络,且可为各种不同的形式,如局域网(LAN)或包括因特网的广域网(WAN)。
主机110可为通用目的计算机***。主机110包括基板111,或叫“主板”。基板111为印制电路板,通过***总线或其他电通信路径,各种组件或设备可连接到基板上。尽管在图1中没有明确示出,基板111上的部件是相互连接的,并且部件在基板111上的布线以及部件在基板111上的相互连接方式在此称为基板111的配置。本领域技术人员应理解基板111的结构可以根据设计需求和制造要求进行调节和改变。
基板111上的部件包括但不限于中央处理器(CPU)112、内存113、基板控制器(BMC)120,以及其他要求的存储和输入/输出(I/O)模块(未示出)。CPU112、内存113和BMC120可嵌入在基板111中,或者可通过接口连接至基板111。在某些实施例中,接口可为物理硬件接口,例如电连接器、总线、端口、电缆、终端或其他I/O设备。
CPU112是主处理器,用于控制主机110的运行。主处理器可执行操作***(OS)或主机110的其他应用。在一些实施例中,主机110可具有不止一个用作主处理器的CPU,例如两个CPU、四个CPU、八个CPU或任何合适数量的CPU。
内存113可包括易失性存储器,例如随机存取存储器(RAM),用于存储主机110运行期间的数据和信息。
BMC120是指管理***管理软件和平台硬件之间的接口的专用微控制器。***100中可构建各种不同类型的传感器,而BMC120读取这些传感器以获得例如温度、散热风扇速度、功率状态、操作***(OS)状态等参数。BMC120监控传感器,并且如果任何参数不在预设限制内该BMC120能通过网络将警报发送至***管理员,以指示***100的潜在故障。管理员还可远程与BMC120通信以采取正确措施,例如重置或重启***以使挂起的操作***重新运行。进一步地,BMC120可包括KVM重定向模块122,用于在计算设备140和主机110之间重定向视频和输入信号。因此,用户可从计算设备140发起KVM会话,以查看主机110的视频输出,并通过计算设备140的输入设备在主机110上输入数据。
在某些实施例中,BMC120的固件遵守用于***监控和故障恢复的智能平台管理接口(IPMI)行业标准。IPMI协议是用于计算机***带外管理和运行监控的标准化的计算机***接口协议,该协议是基于会话的,要求在应用模块能与目标IPMI设备通信之前建立应用模块与目标IPMI设备之间的IPMI会话。IPMI规范提供用于访问兼容计算机的所有可管理特性的基于通用消息的接口,并包括大量的预定指令用于读取温度、压力、风扇速度、机箱扰动和其他参数。***故障日志、硬件监视器以及功率控制也可通过IPMI获取。这样,IPMI定义了用于获取BMC通过操作***或通过外部连接,如通过网络或串口连接收集的各种参数。BMC可通过***接口从局部连接的管理计算机接收IPIM指令或请求,或通过网络接口从局部连接的管理计算机接收外部请求。
此外,在某些实施例中,BMC120包括KVM重定向模块122、网络套接字模块124和网络服务器模块126。KVM模块122执行KVM重定向功能。网络套接字模块124可在网络套接字协议下通过单传输连接协议(TCP)连接建立全双工通信通道。网络服务器模块126可提供通过因特网可访问的网络内容。各模块的细节将后续描述。
进一步地,主机110包括存储器114和至少一个I/O设备116。存储器114为用于存储主机110的操作***(未示出)和其他应用的数据存储介质。存储器114的例子可包括闪存、内存卡、USB驱动器、硬盘驱动器、软盘、光驱或其他类型的数据存储器。I/O设备116的例子包括键盘、触摸屏、鼠标、麦克风、显示屏、触摸屏或可用于主机110的其他I/O设备。
计算设备140通过网络130远程连接至主机110。本领域技术人员应该理解,***100可能包括多个同时远程连接至主机110的计算设备140。计算设备140的例子包括,例如便携式设备,例如智能手机、掌上电脑或其他可移动计算机设备。
计算设备140包括CPU171、内存173和存储器142。存储器142是用于存储计算设备140的操作***或其他应用的数据存储介质。计算设备140的存储器142的例子可包括闪存、内存卡、USB驱动器、硬盘驱动器、软盘、光盘或其他类型的数据存储器。
浏览器程序143可被下载到内存173中并可被计算设备140的CPU171执行。浏览器程序143是用于获取、呈现并将信息资源传送给用户的软件应用。进一步地,浏览器程序143可作为***110的用于与BMC120通信的KVM重定向客户端。一般来说,浏览器程序143可获取提供在开放网络,例如因特网上的信息资源。信息资源可包括网页、图片、视频或其他类型的数据内容。
进一步地,内存173可装载操作***114和网络套接字模块145。网络套接字模块145是与主机110上的BMC120的网络套接字模块124对应的模块,从而可建立BMC120和计算设备140之间的在网络套接字协议下的全双工通信通道。
进一步地,计算设备140包括至少一个I/O设备146。I/O设备146的例子包括键盘、触摸屏、鼠标、麦克风、显示屏、触摸屏或适用于计算设备140的其他I/O设备。一些I/O设备,例如触摸屏用于提供计算设备140的双向输入/输出。
为了显示如网页和使用浏览器程序143的其他数据内容的信息资源,超文本标记语言(HTML)是基于网络语言格式中的标准化的标记语言,用于显示网页和能在浏览器程序143中显示的其他信息。HTML格式的数据使用HTML要素或“标记”的形式书写的,在网页内容中,其被括在尖角括号中(例如<html>)。目前,HTML格式被几乎所有的市场上的浏览器程序所广泛采用,因此它适合作为在计算设备140侧的浏览器程序143和主机110侧的BMC120的网络服务器126之间的通信指令的基于网络的语言格式。
一般来说,除了HTML格式语言外,如JavaScript的脚本语言被用来控制用户接口的输入和输出。进一步地,HTML语言最新开发的版本HTML5为网络存储提供了大量的性质,它运用了用于通过网络浏览器存储数据的网络应用软件方法和协议。以前常用的浏览器程序不支持HTML5格式,但是支持HTML5格式的浏览器程序包括MOZILLA FIREFOX 1.5、GOOGLECHROME 4.0、SAFARI 3.1、SAFARI MOBILE 3.2、OPERA9.0、OPERAMOBILE 10.0、ANDROIDBROWSER 2.1以及INTERNET EXPLORER 9.0,或者是这些浏览器程序的任何更新的版本。因此,浏览器程序143可支持HTML5并可为以上列出的浏览器程序中的一种。
浏览器程序143可使用超文本传输协议(HTTP)与BMC上的网络服务器126通信。具体地,浏览器程序143可发送HTTP请求至网络服务器126。一旦接收到HTTP请求之后,服务器会发送HTTP应答到浏览器程序以响应HTTP请求。
通常,在HTTP下,网络服务器126不能向浏览器程序143发起数据传输。网络套接字可提供单TCP连接上的全双工通信通道,从而服务器可主动发送指令或信息至客户端。网络套接字被并入到HTML5中,因此其可被实施HTML5的网络浏览器和服务器支持。
图2示出了本发明一个实施例提供的建立主机110和计算设备140之间的网络套接字连接的过程。网络套接字连接以与HTTP连接相似的方式开始,但是提供了主机110与浏览器程序124之间的连续的双向的基于网络的连接。当浏览器程序143试图建立网络套接字连接时,浏览器程序143指示网络套接字模块145发送网络套接字握手请求到端口80(默认的HTTP端口)或BMC120的网络套接字模块124的端口443(HTTPS端口)。网络套接字握手请求类似于HTTP请求中使用的GET指令,但是其包括更多网络套接字指令并可看作是“升级的”请求。一旦接收到网络套接字握手请求之后,网络服务器126根据网络套接字握手请求中的升级的信息可识别出该请求为网络套接字握手请求而不是HTTP请求。网络服务器126发送握手应答信息至浏览器程序143。相应地,可建立起浏览器程序143与网络服务器126之间的网络套接字连接150。
图3A和3B提供了网络套接字握手请求和HTTP请求之间的对比,其中图3A示出了使用GET指令的HTTP请求的一个例子,而图3B则示出了网络套接字握手请求的一个例子。如图3A所示,响应HTTP请求的应答信息的头部指示应答信息中的内容的信息,包括内容的类型为文本/网页文件、内容文件的长度以及内容中使用的语言。响应HTTP请求的应答信息的头部的最后一行用于指示在应答的末端关闭主机110和浏览器程序124之间的连接。相比来说,图3B中所示的网络套接字握手请求的前两行包含与HTTP请求相同的GET指令。网络套接字握手请求的随后的行包括升级的信息,用于通知网络套接字模块124进行升级或从常规HTTP请求切换至网络套接字协议。进一步地,与响应HTTP请求的应答信息不同,响应于网络套接字握手请求的握手应答信息的头部不指示在响应的末端关闭连接。
一旦建立了网络套接字连接150,网络套接字模块124和网络套接字模块145都可通过连接发送数据至另一端。数据格式可为任何有效的UTF-8字符串格式,例如JSON或XML,但是如果想用的话其他数据格式也可使用。
网络套接字模块124和145可为各种类型和设计,例如PHP网络套接字、Java网络套接字、Web-Socket-ruby、套接字输入输出模式(Socket IO-mode),或其他类型的网络套接字应用。为了将网络套接字模块124设置为主机110侧的网络套接字服务器,必须提供主机110及使用的端口(例如端口80或443)的域名或IP地址以指示主机110的位置,并且必须建立多个指令以响应某些“事故”,例如打开套接字(即网络套接字连接)、接收套接字中的握手请求或其他信息或者关闭套接字。当建立了网络套接字服务器时,网络套接字客户端可使用统一资源定位地址(URL)连接至网络套接字服务器,统一资源定位地址体系开头为“ws”,替代常规HTTP体系的开头“http”;或者是统一资源定位地址体系开头为“wss”,替代常规HTTP体系的开头“https”。
图4示出了本发明一个实施例提供的基于网络的KVM重定向。如图4所示,在BMC和计算设备140之间建立网络套接字连接150。主机110可以包括用于输出视频信号的视频控制器117以及重定向控制器118,作为视频重定向的I/O端口。本实施例中,BMC120的KVM重定向模块122分别与重定向控制器118以及I/O控制器116连接。KVM重定向模块可以接收来自重定向控制器的重定向视频帧,并发送键盘和鼠标输入信号至I/O控制器116。
计算设备140包括显示设备147以及输入设备,例如键盘148、鼠标149以及触摸屏。虽然并未示出,然而该主机110和计算设备140可以包括其他元件来执行基于网络的KVM重定向。
图5概略性地示出了根据了本发明某些实施例中的基于网络的KVM重定向。如图所示,主机110具有用于输出视频信号的视频控制器117。例如,视频信号可以输出到显示设备中用于显示。视频控制器117与重定向控制器118通信连接,用于捕捉视频信号并产生视频帧。重定向控制器随后发送视频帧至BMC120的KVM重定向模块122。
例如,KVM重定向模块122接收来自主机的视频帧152和154,对该视频帧进行处理,并产生重定向图像,随后发送重定向图像至网络服务器。一旦接收到来自在计算设备140中运行的浏览器的请求时,该网络服务器将发送KVM重定向网页至浏览器。在网页的指示下,该浏览器将从网络服务器中重新获得(retrieve)重定向图像。
在某些实施例中,网络服务器配置为用于利用HTML5支持的画布(canvas)来生成KVM重定向网页。重定向网页包括canvas标签,该标签定义了浏览器显示页面的可绘制区域。该canvas标签为由HTML5所提供的其中一个元素之一,用于产生图像以及视频文件,并允许形状和位图图像动态的且可编写脚本的渲染。Canvas标签定义了可绘制区域的高度和宽度属性。JavaScript代码可通过一整套绘图功能进入可绘制区域,并在由canvas标签所定义的可绘制区域上动态地显示所生成的图像。Canvas标签自身并没有绘图的能力,并可以看作图像的容器。通常地,Canvas标签具有ID,该ID能够被JavaScript代码所参考。图5示出了由浏览器程序143所渲染的KVM重定向页面具有画布。
基于用户输入的配置信息,或者可选择地默认配置,网络服务器可以在KVM重定向网页中设置画布的尺寸。例如,用户可期望其具有与视频控制器输出的视频帧的分辨率相同的分辨率。换言之,由视频控制器输出的视频帧的每一像素在画布上具有各自对应的像素。例如,如果视频帧的视频像素为1024*768,则由canvas标签定义的画布可相应地设置成宽为1024,高为768。再如,用户可期望具有视频帧分辨率的一半。因此,如果视频帧的视频分辨率为1024*768,则由canvas标签定义的画布则设置为宽度512,且高度384。通常地,以下的描述中,视频帧分辨率和画布分辨率之间使用一对一的对应关系作为例子。本领域技术人员应当理解,以下讨论的技术同样地应用于分辨率与视频帧的分辨率具有其他对应关系的画布。
KVM重定向模块122接收来自主机110的重定向控制器118的第一和第二视频帧152和154。当第一帧152为由KVM重定向模块接收到的起始帧时,即KVM重定向模块122先前并未接收到视频帧,则KVM重定向模块产生具有第一帧152内所有像素信息的第一重定向图像157,并将该第一重定向图像157发送至网络服务器126。重定向图像为浏览器程序143可渲染的格式。网络服务器126随后通过以下描述的技术将第一重定向图像157发送至浏览器程序。
在接收到第二视频帧154时,KVM重定向模块122将第二帧154与KVM重定向模块122中保留的第一帧152的副本进行比较,并检测在第一帧和第二帧的任意对应像素中是否存在不同的值。当检测到不同时,KVM重定向模块122生成包含有与第一帧152的对应像素不同的第二帧154的相关像素的像素信息的补丁(patch),并将该补丁发送至网络服务器。如以下详细地描述,网络服务器126将补丁发送至计算设备140的浏览器程序143中,且浏览器程序143相应地可以对在对应区域170和172中的画布进行修补。
图6示出了第一视频帧152和第二视频帧154。在本例中,KVM重定向模块122将每个视频帧分成30个贴片(tile),其中该30个贴片构成了5行6列的矩阵形式。该贴片的数量是可配置的。例如,默认的贴片配置可以为16*16的矩阵。KVM重定向模块122对第一视频帧和第二视频帧逐个像素地进行像素值的比较。换言之,KVM重定向模块122确定第二视频帧的任意像素的值是否与第一视频帧的对应像素的值不同。如果第二视频帧154贴片内的任意像素与第一图像帧152的对应像素相比发生改变,则KVM重定向模块122确定该贴片已经发生改变。例如,如图6所示,与第一帧152相比,第二帧的贴片615’、625’、622’、623’、632’、633’、642’以及643’已经发生改变。KVM重定向模块122因此仅将作为贴片图像的贴片622’、623’、632’、633’、642’、643’、615’以及625’的像素值以及贴片参数发送至网络服务器126。贴片位置由视频帧的坐标来表明;其中,该贴片位置包含在贴片参数内。贴片的位置典型地定义成贴片左上角的位置(例如坐标)。
网络服务器126接收贴片坐标作为贴片参数的一部分,并且确定是否需要将贴片图像的视频帧坐标转换成浏览器坐标,以供浏览器程序对当前渲染的重定向图像进行正确的修补。例如,由网络服务器接收的贴片参数(x,y,W,H)可以表明贴片的位置处于视频帧的坐标(x,y)上,并且该贴片宽度为W,高度为H。宽度和高度参数为可选择的。
当画布的分辨率配置为与视频帧的分辨率具有一对一的对应关系时,即视频帧的每个像素在画布上分别具有对应像素时,则网络服务器126可以确定该贴片参数(x,y,W,H)也可以被画布直接使用,而无需进行转变来将贴片修补在画布上。网络服务器可以将从KVM重定向模块122中接收的贴片图像转换成浏览器程序143可渲染的不同的格式。贴片图像可以为不同的图像或图片文件格式,例如通常使用的JPEG、PNG或BMP格式,或者是浏览器程序143可显示的其他图像文件格式。如以下所述,网络服务器126随后将具有贴片参数的贴片图像发送至浏览器程序143中。浏览器程序143相应地使用贴片图像在贴片参数指明的区域内修补画布。例如,由网络服务器生成的重定向网页可以具有用于指示浏览器将贴片图像修补在画布上的JavaScript代码,例如context.drawlmage(贴片,x,y,W,H)。当画布的分辨率配置成相对视频帧的分辨率具有其他比例(例如1:2)时,则网络服务器126可以根据该比例将视频帧坐标转换成浏览器坐标(例如,x/2,y/2,W/2,H/2)。图5示出了浏览器程序143初始地在画布160上显示第一重定向图像157。在BMC120将包括一个或多个贴片170和172的补丁发送至浏览器程序143后,浏览器程序143则对第一重定向图像157进行修补,以生成第二重定向图像159。
网络服务器126可以通过多种方式将贴片图像发送至浏览器程序143。例如,网络服务器126可以在该网络服务器的预定位置存储贴片图像及其贴片参数。由网络服务器126生成的重定向网页可以指示浏览器程序143周期性地检查预定位置,以确定是否有新的补丁可用。可选择地,重定向网页可以指示浏览器程序143与网络服务器建立网络套接字连接,而网络服务器随后可以将具有贴片参数的贴片图像通过网络套接字连接发送至浏览器程序143。
在某些实施例中,贴片图像可以为各种格式,例如PNG、BMP、JPEG等。网络服务器126可以通过标识符(identifier),例如数值或字母来识别视频帧的每个贴片。网络服务器126可以将贴片图像及其标识符通过网络套接字连接150发送至浏览器程序143。例如,网络服务器126可以发送贴片图像#5至浏览器程序143。浏览器程序143上的画布160可以分成与视频帧的贴片相对应的贴片。换言之,每个贴片标识符也可以识别画布160上的单个贴片。由浏览器程序143渲染的重定向网页对应地具有JavaScript路径,该JavaScript路径可将接收到的贴片图像绘制在由标识符识别的画布160上的贴片区域内。在接收到贴片图像#5后,重定向网页对应地指示浏览器程序在画布上标识为#5的区域中绘制贴片图像(例如,PNG、JPEG或BMP格式)。
图7A示出了根据本发明某些实施例中的采用网络套接字连接和HTML5画布的视频重定向的流程。在操作710中,浏览器程序143通过网络130发送对KVM重定向网页的请求至BMC120。该请求可以为HTTP格式。一旦接收到对KVM重定向网页的请求,在操作720中,BMC120的网络服务器126发送KVM重定向网页至浏览器程序143。因此,浏览器程序143可以向用户显示KVM重定向网页,使计算设备140的用户能够在操作722中输入或选择BMC120的KVM重定向模块122的配置信息。KVM重定向模块的配置信息可以包括重定向图像分辨率信息、重定向图像刷新速率信息、机器和网络设置、验证设置,以及用于KVM重定向的其他信息。随后,在操作724中,浏览器程序143例如采用HTTP协议发送配置信息至BMC120的网络服务器126。一旦接收配置信息后,网络服务器126对应地发送配置信息至KVM重定向模块。在操作730中,BMC120对应地设置(set up)KVM重定向模块122。KVM重定向模块可以与主机110的重定向控制器118建立连接。
在操作760中,浏览器程序143发送网络套接字握手请求至网络服务器126,以在网络套接字协议下建立全双工通信连接。一旦接收到网络套接字握手请求后,在操作762中,网络服务器126指示网络套接字模块124打开网络套接字。类似地,在操作764中,浏览器程序143指示网络套接字模块145打开网络套接字。因此,在操作766中,在网络套接字模块124和网络套接字模块145之间建立了网络套接字连接。
一旦建立了网络套接字连接,则BMC120可以开始对主机110输出的视频通过网络套接字连接重定向至浏览器程序143。特别地,在操作770中,KVM重定向模块接收主机110的第一视频帧。KVM重定向模块随后处理该第一视频帧,以生成第一重定向图像,并将该第一重定向图像发送至网络服务器126中。在操作772中,网络服务器126将第一重定向图像发送至网络套接字模块124。在操作774中,网络套接字模块124将第一重定向图像通过网络套接字连接发送至计算设备的网络套接字模块145中。在操作776中,网络套接字模块145将第一重定向图像发送至浏览器程序143。在操作778中,浏览器程序143随后可以如重定向网页所指示的在画布160上显示第一重定向图像。
随后,在操作780中,KVM重定向模块122接收来自主机110的第二视频帧。该KVM重定向模块122随后将第二视频帧与第一视频帧进行比较,以确定第二视频帧的每一像素是否具有与第一视频帧对应像素不同的像素值。如果第二视频帧中任意像素发生改变,则KVM重定向模块122对应地生成一个或多个贴片图像以及相关的贴片参数。KVM重定向模块122将该贴片图像和贴片参数发送至网络服务器126。如果需要,网络服务器随后将贴片图像转换成浏览器程序143支持的格式。在操作782中,BMC120的网络服务器126发送贴片图像和参数至网络套接字模块124。在操作784中,网络套接字模块124通过网络套接字连接将贴片图像和参数发送至网络套接字模块145。在操作786,网络套接字模块145发送贴片图像和参数至浏览器程序143。在操作788中,该浏览器程序143可以如KVM重定向网页指示的,将画布上的第一重定向图像在由贴片参数指明的区域内采用接收到的贴片图像进行修补。
图7B示出了根据本发明某些实施例中的采用网络套接字连接150和特定图像处理技术进行视频重定向的流程。在本例中,KVM重定向模块122初始地将代表第一帧的第一重定向图像推向(forwads)至浏览器程序143。浏览器程序143相应地可在浏览器程序143的显示区域161显示第一重定向图像。随后,KVM重定向模块122可以使用不同的编码和压缩技术来处理代表第二帧154的第二重定向图像。已处理(即已编码以及已压缩)的第二重定向图像随后通过网络套接字连接150传输至浏览器程序143。由浏览器程序143接收到的重定向网页包括可以用于指示浏览器程序143来对已处理的第二重定向图像进行解压和解码的JavaScript路径。在浏览器程序143对已处理的第二重定向图像进行解压和解码以获得显示图像后,该浏览器程序143可以在浏览器程序143的显示区域显示该图像。
其中一个处理技术(即编码/解码以及压缩/解压)在专利号为7,567,717以及7,970,218的美国专利专利中公开,这些美国专利明确地整合在本文中以供参考。简单来说,如这些专利所公开的,根据第二重定向图像中包围给定像素的若干像素的值以及第一重定向图像中对应像素的值,KVM重定向模块122可以生成用于第二重定向图像的给定像素的预测值。进一步地,根据有损或者无损要求,KVM重定向模块122选择性地将第二重定向图像中给定像素的实际值替换成预测值,并随后对第二重定向图像相应地编码。随后,KVM重定向模块122使用预定算法,例如简化的游程编码(“RLE”)算法来对已编码的第二重定向图像进行压缩,并由此获得已处理的第二重定向图像。此外或可选择地,KVM重定向模块122可以使用惯用的图像压缩技术来对第二重定向图像进行处理。其中,该惯用的图像压缩技术包括无损图像压缩方法和有损图像压缩方法。其中,无损图像压缩方法例如DPCM、熵编码、紧缩(deflation)或链式编码压缩;而有损图像压缩方法例如颜色空间减少、二次抽样或转换编码。
特别地,在图7B中所示的操作710到776与图7A中对应的操作类似。在操作779中,浏览器程序143在浏览器程序143的浏览器显示区域161显示第一重定向图像。在操作781中,KVM重定向模块122接收主机110的第二视频帧,并生成第二重定向图像。KVM重定向模块122随后采用上述讨论的技术对第二重定向图像进行处理,以生成已处理(即已编码且已压缩)的图像。在操作783中,BMC120的网络服务器126将已处理的图像发送至网络套接字模块124。在操作784中,网络套接字模块124将已处理的图像通过网络套接字连接150发送至网络套接字模块145。在操作787中,网络套接字模块145将已处理的图像发送至浏览器程序143。在操作78中,浏览器程序143可以,例如如在重定向网页中所定义的JavaScript路径的指示,对已处理的图像进行解压和解码,以获得用于显示的图像,并随后在显示区域161显示该图像。
图8概略性地示出了根据本发明的另一实施例的基于网络的KVM重定向。在本实施例中,计算设备140包括Java虚拟机(JVM)166。可选择地,JVM可以从BMC120的网络服务器126通过浏览器程序143下载。
初始地,浏览器程序143与BMC120的网络服务器126连接,以接收重定向网页。用户可以输入验证信息,并将该验证信息通过重定向网页发送至网络服务器。网络服务器126对用户进行验证,并随后发送会话令牌至浏览器程序143。网络服务器126存储预编译的Java对象164,该Java对象可被计算设备140上的JVM所执行。在操作浏览器程序的用户的允许下,浏览器程序143下载该Java对象164。Java对象164随后在计算设备140的JVM中执行。Java对象启动可以用于显示重定向图像和补丁的Java显示模块163。Java显示模块163对显示设备147上的图像进行渲染。浏览器程序143将从网络服务器126接收到的会话令牌传递至Java对象164。Java对象164可以与重定向服务器122建立连接151。典型地,在计算设备140的TCP/IP套接字195和在BMC120的TCP/IP套接字125之间建立连接151。通过JVM166,该Java对象164可以指示操作***144为Java对象164打开TCP/IP套接字195。Java对象164使用会话令牌可建立通信通道,以用于与KVM重定向模块122的会话。
在建立通信通道后,KVM重定向模块122可以通过通信通道发送重定向图像和补丁至Java对象。Java对象164调用Java显示模块163来显示重定向图像和补丁。根据用户对重定向图像的所需分辨率的配置,Java对象164将Java显示模块163设置成所需的分辨率。Java对象164可以定义函数,例如drawImage(),调用该函数时可以在Java显示模块163上显示完整的重定向图像,并且在指定区域采用贴片图像对Java显示模块163进行修补。类似于画布160,该Java对象164可以采用坐标参数以在Java显示模块163上绘制贴片图像。
可选择地,对于图7B,KVM重定向模块122可以如上所述对重定向图像进行处理。随后,KVM重定向模块122通过通信通道发送已处理的图像至Java对象164。Java对象164可以对已处理的图像进行解压和解码,以获得用于显示的图像。随后,Java对象164可以在Java显示模块163上显示图像。
图9示出了根据本发明某些实施例的使用Java对象进行视频重定向的流程。在操作910中,浏览器程序143通过网络发送KVM重定向网页请求至BMC120。该请求可以是HTTP格式。一旦接收到KVM重定向网页的请求后,在操作920中,BMC120的网络服务器126发送KVM重定向网页至浏览器程序143。因此,在操作922中,浏览器程序143可以向用户显示KVM重定向网页,并允许计算设备140的用户可以输入或选择KVM重定向模块122的配置信息。KVM重定向模块的配置项信息可以包括重定向图像分辨率信息、重定向图像刷新速率信息、机器和网络设置、验证设置,以及用于KVM重定向的其他信息。随后,在操作924中,浏览器程序143例如采用HTTP协议发送配置信息至BMC120的网络服务器126。网络服务器126对应地发送配置信息至KVM重定向模块122。浏览器程序143还请求来自网络服务器126的Java对象。一旦接收到配置信息,在操作926中,如果需要,网络服务器126对Java对象164进行配置,并随后将Java对象164和会话令牌发送至浏览器程序143。一旦接收到Java对象164,在操作928中,浏览器程序143在JVM166上启动Java对象164,并将会话令牌传递至Java对象164。
同时,在操作930中,BMC对应地设置KVM重定向模块122。KVM重定向模块122可以与主机110的重定向控制器118建立连接。
在操作960中,Java对象164通过采用会话令牌启动与KVM重定向模块122之间的通信连接。在操作966中,在计算设备140的TCP/IP套接字模块195和在BMC120的TCP/IP套接字模块125之间建立TCP/IP连接。
一旦TCP/IP连接建立后,BMC120可开始对从主机110输出的视频通过TCP/IP连接重定向至Java对象164。特别地,在操作970中,KVM重定向模块从主机110中接收第一视频帧,或者帧1。KVM重定向模块可以对第一视频帧进行处理(即,编码和压缩),以生成已处理的第一重定向图像。在操作972中,KVM重定向模块122将已处理的第一重定向图像发送至TCP/IP套接字模块125。在操作974中,TCP/IP套接字模块125将已处理的第一重定向图像通过TCP/IP连接发送至计算设备140的TCP/IP套接字模块195。在操作976中,TCP/IP套接字模块195将第一压缩图像发送至Java对象164。在操作978中,Java对象164对压缩图像进行解压。在操作979中,Java对象将解压图像在Java显示模块163中显示。
随后,在操作980中,KVM重定向模块122接收到来自主机110的第二视频帧。该KVM重定向模块122随后对第二视频帧进行处理(即,编码和压缩),并由此生成已处理的第二重定向图像。在操作982中,KVM重定向模块将已处理的第二重定向图像发送至TCP/IOP套接字模块125。在操作984中,套接字模块125将已处理的第二重定向图像通过TCP/IP连接发送至计算设备140的TCP/IP套接字模块195。在操作986中,TCP/IP套接字模块195将第二压缩图像发送至Java对象164。在操作988中,Java对象164对已处理的第二重定向图像进行解压和解码,并生成用于显示的第二图像。在操作989中,Java对象将第二图像在Java显示模块163中显示。
返回参照图4,在某些实施例中,输入重定向,包括键盘和鼠标重定向与视频重定向同时进行。浏览器程序143可以接收来自输入设备,例如键盘148、鼠标149以及触摸屏的输入信号。浏览器程序143可以将输入数据通过网络套接字连接150发送至BMC120的网络套接字124。当BMC120的网络套接字124接收到输入数据时,网络套接字124将输入数据传递至网络服务器126,且该网络服务器126可对输入数据进行处理以重新获得键盘和鼠标输入。网络服务器126将键盘和鼠标输入发送至KVM重定向模块122。如果需要,KVM重定向模块122可以将键盘和鼠标输入转换成主机110使用的格式,并将该输入发送至I/O控制器116。通过这种方式,主机110可将来源于浏览器程序143的输入当作来源于本地输入设备的输入。
利用操作***144,浏览器程序143可以生成输入事件(input event),该输入事件代表来自指向浏览器程序143的键盘148和鼠标149的输入。例如,在键盘148上,当键被按压时,键盘动作将会发生。一些键盘动作可能涉及同时被按压的多个键的组合。这样的键盘动作通常与键盘148的特定功能键有关,例如Ctrl键、Atl键或者Shift键,这些功能键期望应当与其他键组合工作。在这样的动作中,这种组合将产生与每个单独的键输入所不同的键输入。每个键盘动作将产生响应的输入数据,该输入数据可能包括字符编码,或者对应于键盘事件的其它代表数值。
鼠标可执行多种不同的动作,例如将鼠标光标放置在特定区域上、移动鼠标光标、滚动鼠标滚轮,以及点击(单击或双击)鼠标按钮。在一些实施例中,上述动作可以组合,例如可以在将鼠标光标放置在特定区域时点击鼠标按钮,或“拖动”鼠标,即点击鼠标按钮并在不释放按钮同时移动鼠标光标。通常地,鼠标事件可以分成几类,例如点击事件、拖动事件以及移动事件。
JavaScript提供了对应于这些鼠标和键盘动作的函数以及事件对象。例如,点击动作可能包括按下鼠标事件以及鼠标弹起事件,这分别指的是鼠标按钮被按压的动作,以及被按压的鼠标按钮被释放的动作。移动动作可能包括鼠标移动事件,该鼠标移动事件指的是将鼠标光标从一个位置移动至另一位置。拖动动作指的是鼠标按下事件、鼠标移动事件以及鼠标弹起事件的组合。与鼠标事件有关的其它JavaScript函数和试驾的例子可包括鼠标悬停(mouseover)事件、该事件涉及将鼠标光标移动至屏幕上的预定区域;以及鼠标移入(mouseenter)事件,该事件涉及将鼠标光标移动至屏幕上的预定区域。JavaScript也提供了getMousePos()函数,以与鼠标移动事件组合使用。每个鼠标事件可以包括多个参数。例如,当鼠标按下事件发生时,该事件将生成代表鼠标按下事件的编码,以及生成代表发生该鼠标按下事件所在的鼠标光标位置的坐标参数。
在某些实施例中,当在画布160或Java显示模块163上发生事件时,KVM重定向网页捕捉鼠标事件的位置。例如,显示在浏览器程序143的画布160上的重定向图像可以示出主机110输出的用户界面。用户可以使用计算设备140的鼠标来点击显示在画布上的用户界面的鼠标。重定向网页可以具有JavaScript路径,该JavaScript检测鼠标事件的位置以及检测与画布160或Java显示模块163有关的鼠标事件的生成的坐标。在画布160或Java显示模块163与由主机110的视频控制器117输出的视频帧具有一对一关系的分辨率的位置处,这些浏览器坐标也指示主机110上的重定向鼠标事件的期望位置。在其他情况中,网络服务器126可以将从浏览器程序143中获得的浏览器坐标转换成主机110上的视频帧坐标,以正确地显示主机110上的重定向鼠标事件的期望坐标位置。
例如,返回参照图5,当浏览器程序140的画布160显示重定向图像159时,计算设备140的用户可以使用鼠标点击画布上的位置180。因此,浏览器程序143可以使用JavaScript(包括鼠标按下事件和getMousePos()函数)来获得鼠标点击位置180的坐标参数,并将鼠标点击事件数据发送至BMC120。随后,如果需要,BMC120强该鼠标点击数据转换成主机110使用的格式,并将该事件数据发送至主机110的输入控制器116。
本申请的以上示例性的实施例的上述描述只是用来说明和描述,并未企图穷尽所有或将申请限制为所公开的具体形式。在上述教导下,还可以有很多修改和变形。
选择和描述的实施例是用来解释本申请的原理及其实际应用以使本领域技术人员实施本申请和各种实施例以及通过各种修改以适用于各种预期的用途的。在不脱离本申请精神和范围的情况下,替代实施例对于本申请所属技术领域的技术人员来说是显而易见的。例如,可同时使用各种探测仪来实施本发明。因此,本申请的范围是由其权利要求确定的,而不是以上说明书及其中描述的示例性实施例。
Claims (25)
1.一种基于网络的键盘、视频和鼠标(KVM)重定向的方法,其特征在于,包括:
在基板管理控制器(BMC)上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行所述主机的管理功能;
在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动可绘制区域,并与所述网络服务器建立网络套接字连接;
生成代表所述第二视频帧的已处理的图像;
在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及
将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。
2.根据权利要求1所述的方法,其特征在于,生成已处理的图像包括:
在所述BMC上,将所述第二视频帧与所述第一视频帧进行比较,以确定所述第二视频帧的第一像素;其中,所述第一像素具有与所述第一视频帧的对应像素的像素值不同的像素值;
生成第一贴片图像和相关的贴片参数,所述第一贴片图像代表包括所述第一像素的所述第二视频帧的一部分;
其中,发送所述已处理的图像包括:将所述第一贴片图像和贴片参数通过所述网络套接字连接发送至所述浏览器程序;其中,对所述网页进行编程以指示所述浏览器程序将所述第一贴片图像在可绘制区域上,修补在所述贴片参数指明的位置处。
3.根据权利要求2所述的方法,其特征在于,包括:
生成代表所述第一视频帧的重定向图像;以及
将所述重定向图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以在所述可绘制区域显示所述重定向图像。
4.根据权利要求3所述的方法,其特征在于,所述可绘制区域为由HTML5定义的画布;其中,所述网页被编程以指示所述浏览器程序在所述画布上显示所述重定向图像,并将所述第一贴片图像修补在所述已显示的重定向图像上。
5.根据权利要求3所述的方法,其特征在于,包括:
将所述第二视频帧分成多个贴片;
将所述第二视频帧的每个像素的像素值与所述第一视频帧的对应像素的像素值进行比较;
确定所述第二视频帧中多个改变的像素;其中,所述改变的像素中的每个的像素值均与每个所述改变的像素在所述第一视频帧中的对应像素的像素值不同;
确定多个改变的贴片;其中,所述改变的贴片中的每个包括至少一个改变的像素;
生成多个改变的贴片图像;其中,每一所述改变的贴片图像分别代表所述改变贴片中的一个;以及
将所述多个改变的贴片图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以指示所述浏览器程序将所述改变的贴片图像修补在所述绘制区域上。
6.根据权利要求5所述的方法,其特征在于,包括:
确定所述第二视频帧上每个改变的贴片的位置;以及
根据由每个所述改变的贴片图像所代表的各个改变的贴片的位置,生成每个所述改变的贴片图像的贴片参数;其中,所述网页被编程以指示所述浏览器程序将每个所述改变的贴片图像在所述绘制区域上,修补在由所述贴片参数所指明的位置处。
7.根据权利要求6所述的方法,其特征在于,所述贴片参数包括指明所述可绘制区域位置的坐标、每个所述改变的贴片图像的宽度,以及每个所述改变的贴片图像的高度。
8.根据权利要求1所述的方法,其特征在于,所述网页被编程以指示所述浏览器程序捕捉发生在所述可绘制区域上的第一事件,并将所述第一事件的事件数据发送至所述网络服务器;所述第一事件为鼠标事件或键盘事件;所述方法包括:
通过所述网络套接字连接接收来自所述浏览器程序的事件数据;
生成所述主机可兼容的并代表所述事件数据的输入数据;以及
将所述输入数据发送至所述主机的输入控制器。
9.根据权利要求8所述的方法,其特征在于,所述第一事件为鼠标事件,所述事件数据指明所述可绘制区域上发生事件的事件位置;所述方法包括:
根据所述事件位置确定所述主机的位置坐标;以及
生成代表所述鼠标事件以及位置坐标的输入数据。
10.根据权利要求8所述的方法,其特征在于,所述第一事件为键盘事件;其中,所述事件数据指明按键;所述方法包括:
生成代表所述按键的输入数据。
11.根据权利要求1所述的方法,其特征在于,包括:
根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及
根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。
12.根据权利要求11所述的方法,其特征在于,包括:对所述已编码的图像在所述网络服务器上进行压缩,以生成已处理的图像;其中,所述网页被编程以指示所述浏览器程序调用JavaScript路径来对所述已处理的图像进行解压和解码,以在所述可绘制区域中显示已解压和已解码的图像。
13.一种基于网络的键盘、视频和鼠标(KVM)重定向的方法,其特征在于,包括:
在基板管理控制器(BMC)上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行所述主机的管理功能;
在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;
生成代表所述第二视频帧的已处理的图像;
将Java对象存储在所述网络服务器中;其中,所述网页被编程以指示所述浏览器程序下载所述Java对象,其中所述Java对象定义了Java显示器;
在所述BMC和所下载的所述Java对象之间建立网络连接;其中所述Java对象在所述计算设备的Java虚拟机上执行;以及
将所述已处理的图像发送至已执行的所述Java对象。
14.根据权利要求13所述的方法,其特征在于,包括:
根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及
根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。
15.根据权利要求14所述的方法,其特征在于,包括:
在所述网络服务器上压缩所述已编码的图像,以生成已处理的图像;
在所述已执行的Java对象上对所述已处理的图像进行解压和解码;以及
将所述已解压和已解码的图像显示在所述Java显示器上。
16.一种基于网络的键盘、视频和鼠标(KVM)重定向的***,其特征在于,具有存储介质以及存储在所述存储介质内的计算机可执行指令,当所述计算机可执行指令被基板管理控制器(BMC)计算机的处理器执行时,导致所述处理器:
接收从所述主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;
在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动可绘制区域,并与所述网络服务器建立网络套接字连接;
生成代表所述第二视频帧的已处理的图像;
在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及
将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。
17.根据权利要求16所述的***,其特征在于,当所述指令执行时,导致所述处理器:
将所述第二视频帧与所述第一视频帧进行比较,以确定所述第二视频帧的第一像素;其中,所述第一像素具有与所述第一视频帧的对应像素的像素值不同的像素值;
生成第一贴片图像和相关的贴片参数,所述第一贴片图像代表包括所述第一像素的所述第二视频帧的一部分;
将所述第一贴片图像和贴片参数通过所述网络套接字连接发送至所述浏览器程序;
其中,所述网页被编程以指示所述浏览器程序将所述第一贴片图像在可绘制区域上,修补在所述贴片参数指明的位置处。
18.根据权利要求17所述的***,其特征在于,当所述指令执行时,导致所述处理器:
生成代表所述第一视频帧的重定向图像;以及
将所述重定向图像通过所述网络套接字连接发送至所述浏览器程序;
其中,所述网页被编程以在所述可绘制区域显示所述重定向图像;
所述可绘制区域为由HTML5定义的画布;其中,所述网页被编程以指示所述浏览器程序在所述画布上显示所述重定向图像,并将所述第一贴片图像修补在所述已显示的重定向图像上。
19.根据权利要求18所述的***,其特征在于,当所述指令执行时,导致所述处理器:
将所述第二视频帧分成多个贴片;
将所述第二视频帧的每个像素的像素值与所述第一视频帧的对应像素的像素值进行比较;
确定所述第二视频帧中多个改变的像素;其中,所述改变的像素中的每个的像素值均与每个所述改变的像素在所述第一视频帧中的对应像素的像素值不同;
确定多个改变的贴片;其中,所述改变的贴片中的每个包括至少一个改变的像素;
生成多个改变的贴片图像;其中,每一所述改变的贴片图像分别代表所述改变贴片中的一个;
将所述多个改变的贴片图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以指示所述浏览器程序将所述改变的贴片图像修补在所述绘制区域上。
20.根据权利要求17所述的***,其特征在于,当所述指令执行时,导致所述处理器:
确定所述第二视频帧上每个改变的贴片的位置;以及
根据由每个所述改变的贴片图像所代表的各个改变的贴片的位置,生成每个所述改变的贴片图像的贴片参数;其中,所述网页被编程以指示所述浏览器程序将每个所述改变的贴片图像在所述绘制区域上修补在由所述贴片参数所指明的位置处;
所述贴片参数包括指明所述可绘制区域位置的坐标、每个所述改变的贴片图像的宽度,以及每个所述改变的贴片图像的高度。
21.根据权利要求20所述的***,其特征在于,所述网页被编程以指示所述浏览器程序捕捉发生在所述可绘制区域上的第一事件,并将所述第一事件的事件据发送至所述网络服务器;所述第一事件为鼠标事件或键盘事件;当所述指令执行时,导致所述处理器:
通过所述网络套接字连接接收来自所述浏览器程序的事件数据;
生成所述主机可兼容的并代表所述事件数据的输入数据;以及
将所述输入数据发送至所述主机的输入控制器。
22.根据权利要求21所述的***,其特征在于,所述第一事件为鼠标事件,所述事件数据指明所述可绘制区域上发生事件的事件位置;当所述指令执行时,导致所述处理器:
根据所述事件位置确定所述主机的位置坐标;以及
生成代表所述鼠标事件以及位置坐标的输入数据。
23.根据权利要求21所述的***,其特征在于,所述第一事件为键盘事件;其中,所述事件数据指明按键;当所述指令执行时,导致所述处理器生成代表所述按键的输入数据。
24.根据权利要求16所述的***,其特征在于,当所述指令执行时,导致所述处理器:
根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及
根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。
25.根据权利要求24所述的***,其特征在于,当所述指令执行时,导致所述处理器对所述已编码的图像在所述网络服务器上进行压缩,以生成已处理的图像;其中,所述网页被编程以指示所述浏览器程序调用JavaScript路径来对所述已处理的图像进行解压和解码,以在所述可绘制区域中显示已解压和已解码的图像。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/032466 WO2014143034A1 (en) | 2013-03-15 | 2013-03-15 | System and method of web-based keyboard, video and mouse (kvm) redirection and application of the same |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105051713A CN105051713A (zh) | 2015-11-11 |
CN105051713B true CN105051713B (zh) | 2017-08-04 |
Family
ID=54477792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380074738.6A Active CN105051713B (zh) | 2013-03-15 | 2013-03-15 | 基于网络的键盘、视频和鼠标(kvm)重定向的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105051713B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545198B (zh) * | 2017-05-18 | 2020-02-11 | 新华三信息技术有限公司 | 一种按键管理方法和装置 |
CN109446460B (zh) * | 2018-10-24 | 2021-11-19 | 国云科技股份有限公司 | 一种html5在线视频重定向***及其实现方法 |
CN109634659A (zh) * | 2018-12-18 | 2019-04-16 | 浪潮电子信息产业股份有限公司 | 一种对bmc进行控制的方法、装置、设备以及存储介质 |
CN111190492B (zh) * | 2019-12-25 | 2023-07-18 | 曙光信息产业(北京)有限公司 | 开启kvm的方法及装置 |
CN113126869B (zh) * | 2021-03-30 | 2022-03-18 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于国产bmc芯片的kvm图像高速重定向的实现方法及*** |
CN115543140B (zh) * | 2022-09-26 | 2024-05-14 | 深圳市国鑫恒运信息安全有限公司 | 一种在sol页面展示bios设置界面光标的控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416173A (zh) * | 2006-03-31 | 2009-04-22 | STTWebOS股份有限公司 | 在基于万维网的环境下交换信息的方法及装置 |
US8136042B2 (en) * | 2007-05-11 | 2012-03-13 | Raritan Americas, Inc. | Local port browser interface |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080228865A1 (en) * | 2007-03-15 | 2008-09-18 | Nazareno Brier Cruzada | Electronic personal computing and videophone system consisting of a remote server system providing dynamic, subscription based virtual computing services & resources, a thin client hardware device connected to a television set and wireless keyboard & mouse, and a wireless mobile device (a Pocket PC Phone) |
DE112012002780B4 (de) * | 2011-07-01 | 2020-08-20 | Stoneware Inc. | Verfahren und Vorrichtung zur Berücksichtigung des Aufwands von Anwendungen basierend auf Kundenhardware |
-
2013
- 2013-03-15 CN CN201380074738.6A patent/CN105051713B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416173A (zh) * | 2006-03-31 | 2009-04-22 | STTWebOS股份有限公司 | 在基于万维网的环境下交换信息的方法及装置 |
US8136042B2 (en) * | 2007-05-11 | 2012-03-13 | Raritan Americas, Inc. | Local port browser interface |
Also Published As
Publication number | Publication date |
---|---|
CN105051713A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2972936B1 (en) | System and method of web-based keyboard, video and mouse (kvm) redirection and application of the same | |
CN105051713B (zh) | 基于网络的键盘、视频和鼠标(kvm)重定向的方法及*** | |
US8732588B2 (en) | Method and apparatus for remotely displaying screen files and efficiently handling remote operator input | |
US20200137196A1 (en) | Capturing and replaying application sessions using resource files | |
CN108959068B (zh) | 软件界面测试方法、设备及存储介质 | |
CN108595304B (zh) | 网页监控方法及装置 | |
CN103930885B (zh) | 测量网页渲染时间 | |
CN105787123B (zh) | 提供最小下载和模拟页面导航特征的服务器计算机和方法 | |
TWI671677B (zh) | 交互處理方法及裝置 | |
TW201037531A (en) | Method for server-side logging of client browser state through markup language | |
CN107948131A (zh) | 使用户登录到浏览器的方法、***和设备 | |
US9740668B1 (en) | Plotting webpage loading speeds and altering webpages and a service based on latency and pixel density | |
CN106406851A (zh) | 一种网页截图方法、*** | |
CN104050238A (zh) | 一种地图标注方法和装置 | |
CN104834588B (zh) | 检测常驻式跨站脚本漏洞的方法和装置 | |
US20170212964A1 (en) | System and method for dynamic content rendering | |
US8726182B1 (en) | Multi-stage throbber | |
US11321524B1 (en) | Systems and methods for testing content developed for access via a network | |
US9699247B2 (en) | User experience monitoring for application remoting | |
CN106850717A (zh) | 一种基于网页的监视工业数据采集网关实时数据的方法 | |
CN105051714B (zh) | 基于网络的虚拟媒体重定向的***和方法 | |
CN111259381A (zh) | 页面交互方法、装置、计算机可读介质及电子设备 | |
CN115292188A (zh) | 交互界面合规性检测方法、装置、设备、介质和程序产品 | |
CN111736539B (zh) | 一种监控数据显示方法、装置、***、服务器及存储介质 | |
CN105979316A (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 |