CN105051713A - System and method of web-based keyboard, video and mouse (kvm) redirection and application of the same - Google Patents
System and method of web-based keyboard, video and mouse (kvm) redirection and application of the same Download PDFInfo
- Publication number
- CN105051713A CN105051713A CN201380074738.6A CN201380074738A CN105051713A CN 105051713 A CN105051713 A CN 105051713A CN 201380074738 A CN201380074738 A CN 201380074738A CN 105051713 A CN105051713 A CN 105051713A
- Authority
- CN
- China
- Prior art keywords
- image
- video frame
- browser program
- pixel
- event
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 241000699666 Mus <mouse, genus> Species 0.000 description 59
- 230000015654 memory Effects 0.000 description 19
- 230000004044 response Effects 0.000 description 17
- 230000009471 action Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 239000000758 substrate Substances 0.000 description 9
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 208000018747 cerebellar ataxia with neuropathy and bilateral vestibular areflexia syndrome Diseases 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
Description
相关申请的交叉引用 Cross References to Related Applications
本PCT申请要求申请日为2013年3月15日、申请序列号为No.13/839,151、题为“基于网络的键盘、视频和鼠标(KVM)重定向的系统和方法及其应用”,且发明人为姗卓依·迈迪(SanjoyMaity)、巴斯卡尔·帕斯本(BaskarParthiban)、山维纳斯·克里斯夫(SamvineshChristopher)以及瓦拉达查理·苏丹·阿雅曼(VaradachariSudanAyanam)的美国专利申请的优先权和权益,该申请在此全文引用,以供参考。This PCT application requires a filing date of March 15, 2013, application serial number No. 13/839,151, entitled "System and method for network-based keyboard, video, and mouse (KVM) redirection and its application", and Inventors Sanjoy Maity, Baskar Parthiban, Samvinesh Christopher and Varadachari Sudan Ayanam U.S. Priority and benefit to a patent application, which is hereby incorporated by reference in its entirety.
技术领域technical field
本发明涉及计算机系统领域,并尤其涉及一种主机和计算设备之间的基于网络的键盘、视频和鼠标(KVM)重定向的系统和方法。The present invention relates to the field of computer systems, and more particularly to a system and method for network-based keyboard, video, and mouse (KVM) redirection between a host computer and a computing device.
背景技术Background technique
在此描述的背景技术是用来概述本申请的内容。在该背景技术部分中描述的当前提及的发明人的工作,以及不可认定为在本申请提交日期的现有技术的说明书的方面,既没有明确地也没有隐含地承认为本申请的现有技术。The background art described here is intended to summarize the content of the application. The work of the presently mentioned inventors described in this Background section, and aspects of the specification that are not admitted to be prior art as at the filing date of this application, are neither expressly nor implicitly admitted to be present in this application. have technology.
通常,用语“计算机系统”指的是独立系统或多个互联系统,例如客户端-服务器网络。不管其实施如何,构成计算机系统的各种部件通常在由性能协议或标准所定义的一系列参数范围内进行操作的。例如,通常对计算机机箱的温度进行监控,以在系统可能超过某一预设温度读数时检测其时间周期(periodsintime)。计算机系统内被监控的其他形式的信息包括但不限于,与位于系统的基板上的半导体器件有关的电压、位于基板上或位于系统机箱内的散热风扇的速度(例如,单位为rpm),以及在硬盘驱动器内或光驱内的主轴电机的速度。Generally, the term "computer system" refers to a stand-alone system or a plurality of interconnected systems, such as a client-server network. Regardless of their implementation, the various components that make up a computer system typically operate within a set of parameters defined by performance protocols or standards. For example, the temperature of a computer case is often monitored to detect periods in time when the system may exceed a certain preset temperature reading. Other forms of information that are monitored within a computer system include, but are not limited to, voltages associated with semiconductor devices located on the system's base board, the speed (e.g., in rpm) of cooling fans located on the base board or within the system chassis, and The speed of the spindle motor in a hard disk drive or in an optical drive.
使用不同类型的传感器来检测与计算机系统及其组成部件相关的运行及性能相关参数。参见上述提供的例子,这些传感器包括温控器、电压表和速度计等。计算机系统典型地采用一个或多个管理模块来辅助采集和分析的各种传感器所感应到的用于测量系统内的操作和性能相关参数信息。这些管理模块可以为软件或硬件成分,但典型地既包括软件又包括硬件成分。一个这样的管理模块称为“基板管理控制器”(BMC)。该BMC为计算机系统的微处理器,并具有指定数量的触针(contactpin),通过该触针可以接收到由各种传感器感应的信息以供BMC分析。为了执行该分析,BMC通过固件(fireware)进行编程,以执行与系统的监控和恢复有关的程序。通过该固件对BMC进行编程,以监控计算机系统内感应到的各种运行和性能相关参数,并分析该信息以确定当前是否存在任意的感应参数超出预期或建议的工作范围,这些情况的发生俗称“事故”。Different types of sensors are used to detect operating and performance-related parameters related to computer systems and their component parts. See the examples provided above, these sensors include thermostats, voltmeters, and speedometers, among others. A computer system typically employs one or more management modules to assist in the collection and analysis of information sensed by various sensors for measuring operational and performance-related parameters within the system. These management modules can be software or hardware components, but typically include both software and hardware components. One such management module is called a "baseboard management controller" (BMC). The BMC is a microprocessor of a computer system, and has a specified number of contact pins through which information sensed by various sensors can be received for analysis by the BMC. In order to perform this analysis, the BMC is programmed by firmware to execute programs related to monitoring and recovery of the system. Program the BMC through this firmware to monitor various operating and performance-related parameters sensed in the computer system, and analyze the information to determine whether any sensed parameters currently exceed the expected or recommended operating range. The occurrence of these situations is commonly known as "ACCIDENT".
BMC可以执行键盘、视频和鼠标(KVM)的重定向。然而,在该KVM重定向的执行中仍存在未解决的需求。The BMC can perform keyboard, video, and mouse (KVM) redirection. However, there are still unresolved needs in the execution of this KVM redirection.
发明内容Contents of the invention
本申请的某些方面涉及一种执行键盘、视频和鼠标(KVM)重定向的方法。所述方法由由基板管理控制器(BMC)实施。所述方法包括:(a)在所述BMC上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动(initiate)可绘制区域,并与所述网络服务器建立网络套接字连接;(c)生成代表所述第二视频帧的已处理的图像;(d)在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及(e)将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。在某些实施例中,所述方法包括:(a)在所述BMC上,将所述第二视频帧与所述第一视频帧进行比较,以确定所述第二视频帧的第一像素;其中,所述第一像素具有与所述第一视频帧的对应像素的像素值不同的像素值;(b)生成第一贴片图像和相关的贴片参数,所述第一贴片图像代表包括所述第一像素的所述第二视频帧的一部分。在某些实施例中,所述方法包括:将所述第一贴片图像和贴片参数通过所述网络套接字连接发送至所述浏览器程序。在某些实施例中,对所述网页进行编程以指示所述浏览器程序将所述第一贴片图像在可绘制区域上,修补在所述贴片参数指明的位置处。Certain aspects of the present application relate to a method of performing keyboard, video, and mouse (KVM) redirection. The method is implemented by a Baseboard Management Controller (BMC). The method comprises: (a) receiving the first video frame and the second video frame redirected from the host on the BMC; wherein the BMC executes the management function of the host; (b) on the network server of the BMC generating a webpage, and sending the webpage to a browser program running in a computing device through a network; wherein, the webpage is programmed to instruct the browser program to initiate (initiate) a drawable area, and communicate with the web server establishing a web socket connection; (c) generating a processed image representing said second video frame; (d) establishing a web socket connection between said web server and said browser program; and (e ) sending the processed image to the browser program through the network socket connection. In some embodiments, the method includes: (a) comparing, at the BMC, the second video frame to the first video frame to determine a first pixel of the second video frame ; wherein the first pixel has a pixel value different from that of a corresponding pixel of the first video frame; (b) generating a first tile image and related tile parameters, the first tile image represents a portion of the second video frame that includes the first pixel. In some embodiments, the method includes: sending the first tile image and tile parameters to the browser program through the network socket connection. In some embodiments, the web page is programmed to instruct the browser program to patch the first patch image on the drawable area at the position specified by the patch parameter.
在某些实施例中,所述方法包括:(a)生成代表所述第一视频帧的重定向图像;以及(b)将所述重定向图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以在所述可绘制区域显示所述重定向图像。其中,所述可绘制区域为由HTML5定义的画布。所述网页被编程以指示所述浏览器程序在所述画布上显示所述重定向图像,并将所述第一贴片图像修补在所述已显示的重定向图像上。In some embodiments, the method includes: (a) generating a redirected image representing the first video frame; and (b) sending the redirected image to the A browser program; wherein, the webpage is programmed to display the redirected image in the drawable area. Wherein, the drawable area is a canvas defined by HTML5. The webpage is programmed to instruct the browser program to display the redirection image on the canvas, and patch the first patch image on the displayed redirection image.
在某些实施例中,所述方法还包括:(a)将所述第二视频帧分成多个贴片;(b)将所述第二视频帧的每个像素的像素值与所述第一视频帧的对应像素的像素值进行比较;(c)确定所述第二视频帧中多个改变的像素;其中,所述改变的像素中的每个的像素值均与每个所述改变的像素在所述第一视频帧中的对应像素的像素值不同;(d)确定多个改变的贴片;其中,所述改变的贴片中的每个包括至少一个改变的像素;(e)生成多个改变的贴片图像;其中,每一所述改变的贴片图像分别代表所述改变贴片中的一个;以及(f)将所述多个改变的贴片图像通过所述网络套接字连接发送至所述浏览器程序;其中,所述网页被编程以指示所述浏览器程序将所述改变的贴片图像修补在所述绘制区域上。In some embodiments, the method further includes: (a) dividing the second video frame into a plurality of tiles; (b) combining the pixel value of each pixel of the second video frame with the first (c) determining a plurality of changed pixels in the second video frame; wherein the pixel value of each of the changed pixels is the same as each of the changed pixels The pixel value of the corresponding pixel of the pixel in the first video frame is different; (d) determining a plurality of changed tiles; wherein each of the changed tiles includes at least one changed pixel; (e ) generating a plurality of changed tile images; wherein each of the changed tile images represents one of the changed tiles; and (f) passing the plurality of changed tile images through the network A socket connection is sent to the browser program; wherein the web page is programmed to instruct the browser program to patch the changed patch image on the drawing area.
在某些实施例中,所述方法还包括:(a)确定所述第二视频帧上每个改变的贴片的位置;以及(b)根据由每个所述改变的贴片图像所代表的各个改变的贴片的位置,生成每个所述改变的贴片图像的贴片参数。所述网页被编程以指示所述浏览器程序将每个所述改变的贴片图像在所述绘制区域上修补在由所述贴片参数所指明的位置处。所述贴片参数包括指明所述可绘制区域位置的坐标、每个所述改变的贴片图像的宽度,以及每个所述改变的贴片图像的高度。所述网页被编程以指示所述浏览器程序捕捉发生在所述可绘制区域上的第一事件,并将所述第一事件的事件数据发送至所述网络服务器;所述第一事件为鼠标事件或键盘事件。所述方法包括:(a)通过所述网络套接字连接接收来自所述浏览器程序的事件数据;(b)生成所述主机可兼容的并代表所述事件数据的输入数据;以及(c)将所述输入数据发送至所述主机的输入控制器。在某些实施例中,所述第一事件为鼠标事件,所述事件数据指明所述可绘制区域上发生事件的事件位置。所述方法包括:(a)根据所述事件位置确定所述主机的位置坐标;以及(b)生成代表所述鼠标事件以及位置坐标的输入数据。在某些实施例中,所述第一事件为键盘事件;其中,所述事件数据指明按键。所述方法包括:生成代表所述按键的输入数据。In some embodiments, the method further includes: (a) determining the position of each changed tile on the second video frame; and (b) according to the position represented by each of the changed tile images The position of each changed tile is generated, and the tile parameters of each changed tile image are generated. The webpage is programmed to instruct the browser program to patch each of the changed tile images on the drawing area at a position specified by the tile parameters. The tile parameters include coordinates indicating the position of the drawable area, the width of each of the changed tile images, and the height of each of the changed tile images. The webpage is programmed to instruct the browser program to capture the first event occurring on the drawable area, and send the event data of the first event to the web server; the first event is a mouse event or keyboard event. The method includes: (a) receiving event data from the browser program over the web socket connection; (b) generating input data compatible with the host and representing the event data; and (c ) sending the input data to an input controller of the host computer. In some embodiments, the first event is a mouse event, and the event data indicates an event location where the event occurs on the drawable area. The method includes: (a) determining location coordinates of the host based on the event location; and (b) generating input data representing the mouse event and location coordinates. In some embodiments, the first event is a keyboard event; wherein the event data indicates a key press. The method includes generating input data representative of the key press.
在某些实施例中,所述方法包括:(a)根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及(b)根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。在某些实施例中,所述方法还包括对所述已编码的图像在所述网络服务器上进行压缩,以生成已处理的图像。所述网页被编程以指示所述浏览器程序调用JavaScript路径来对所述已处理的图像进行解压和解码,以在所述可绘制区域中显示已解压和已解码的图像。In some embodiments, the method includes: (a) based on pixel values of a plurality of surrounding pixels surrounding a given pixel and pixels on the first video frame corresponding to the given pixel and surrounding pixels A pixel value for generating a predicted value of a given pixel of the second image on the BMC; and (b) selectively replacing the pixel value of the given pixel with the predicted value according to lossy or lossless requirements , to generate an encoded image. In some embodiments, the method further comprises compressing the encoded image on the web server to generate a processed image. The web page is programmed to instruct the browser program to invoke a JavaScript routine to decompress and decode the processed image to display the decompressed and decoded image in the drawable area.
本申请的某些方面涉及另一种执行键盘、视频和鼠标(KVM)重定向的方法。所述方法由由基板管理控制器(BMC)实施。所述方法包括:(a)在所述BMC上接收从主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;(c)生成代表所述第二视频帧的已处理的图像;(d)将Java对象存储在所述网络服务器中;其中,所述网页被编程以指示所述浏览器程序下载所述Java对象,其中所述Java对象定义了Java显示器;(e)在所述BMC和所下载的所述Java对象之间建立网络连接;其中所述Java对象在所述计算设备的Java虚拟机上执行;以及(f)将所述已处理的图像发送至已执行的所述Java对象。Certain aspects of the present application relate to another method of performing keyboard, video, and mouse (KVM) redirection. The method is implemented by a Baseboard Management Controller (BMC). The method comprises: (a) receiving the first video frame and the second video frame redirected from the host on the BMC; wherein the BMC executes the management function of the host; (b) on the network server of the BMC generating a web page, and sending the web page over a network to a browser program running on a computing device; (c) generating a processed image representing the second video frame; (d) storing a Java object on the network In the server; wherein, the webpage is programmed to instruct the browser program to download the Java object, wherein the Java object defines a Java display; (e) between the BMC and the downloaded Java object establishing a network connection; wherein said Java object executes on a Java virtual machine of said computing device; and (f) sending said processed image to said executed Java object.
在某些实施例中,所述方法还包括:(a)根据包围给定像素的多个包围像素的像素值以及对应于所述给定像素和包围像素的所述第一视频帧上的像素的像素值,在所述BMC上生成所述第二图像的给定像素的预测值;以及(b)根据有损或者无损要求选择性地将所述给定像素的像素值替换成所述预测值,以生成编码图像。在某些实施例中,所述方法还包括:(a)在所述网络服务器上压缩所述已编码的图像,以生成已处理的图像;(b)在所述已执行的Java对象上对所述已处理的图像进行解压和解码;以及(c)将所述已解压和已解码的图像显示在所述Java显示器上。In some embodiments, the method further includes: (a) based on pixel values of a plurality of surrounding pixels surrounding a given pixel and pixels on the first video frame corresponding to the given pixel and surrounding pixels Generate a predicted value of a given pixel of the second image on the BMC; and (b) selectively replace the pixel value of the given pixel with the predicted value according to lossy or lossless requirements value to generate an encoded image. In some embodiments, the method further includes: (a) compressing the encoded image on the web server to generate a processed image; (b) compressing the encoded image on the executed Java object decompressing and decoding the processed image; and (c) displaying the decompressed and decoded image on the Java display.
本申请的某些方面涉及一种非短暂性计算机存储介质。所述非短暂性计算机存储介质存储计算机可执行指令。当所述计算机可执行指令被基板管理控制器(BMC)计算机的处理器执行时,所述指令导致所述主机:(a)接收从所述主机重定向的第一视频帧和第二视频帧;其中所述BMC执行主机的管理功能;(b)在所述BMC的网络服务器上生成网页,并将所述网页通过网络发送至运行在计算设备中的浏览器程序;其中,所述网页被编程以指示所述浏览器程序启动可绘制区域,并与所述网络服务器建立网络套接字连接;(c)生成代表所述第二视频帧的已处理的图像;(d)在所述网络服务器和所述浏览器程序之间建立网络套接字连接;以及(e)将所述已处理的图像通过所述网络套接字连接发送至所述浏览器程序。Certain aspects of the present application relate to a non-transitory computer storage medium. The non-transitory computer storage medium stores computer-executable instructions. The computer-executable instructions, when executed by a processor of a baseboard management controller (BMC) computer, cause the host to: (a) receive a first video frame and a second video frame redirected from the host ; Wherein said BMC executes the management function of mainframe; (b) generates webpage on the network server of said BMC, and said webpage is sent to the browser program running in computing equipment through network; Wherein, said webpage is programming to instruct the browser program to start a drawable area and establish a network socket connection with the network server; (c) generate a processed image representing the second video frame; establishing a network socket connection between the server and the browser program; and (e) sending the processed image to the browser program through the network socket connection.
根据以下提供的具体的说明书,本申请的应用前景变得非常清楚。应理解,具体的说明书和特定的例子是只是用来阐述本申请并不是用于限制本申请的保护范围。From the detailed description provided below, the application prospects of the present application become quite clear. It should be understood that the specific description and specific examples are only used to illustrate the present application and are not intended to limit the protection scope of the present application.
附图说明Description of drawings
从详细描述的说明书和附图中可更全面地理解本申请,其中:A more complete understanding of the present application can be obtained from the detailed specification and drawings in which:
图1示意性地描述了本发明一个实施例提供的基于网络的KVM重定向系统;Fig. 1 schematically describes the network-based KVM redirection system provided by one embodiment of the present invention;
图2示意性地描述了本发明一个实施例提供的网络套接字连接(websocket);Fig. 2 has described schematically the network socket connection (websocket) that an embodiment of the present invention provides;
图3A举例描述了使用GET指令的HTTP请求和HTTP应答;Fig. 3 A has described the HTTP request and HTTP response of using GET instruction by example;
图3B举例描述了本发明一个实施例提供的网络套接字握手请求和应答;Fig. 3B exemplifies the network socket handshake request and response provided by one embodiment of the present invention;
图4示意性地描述了本发明一个实施例提供的基于网络的KVM重定向;Fig. 4 has schematically described network-based KVM redirection provided by an embodiment of the present invention;
图5示意性地描述了本发明一个实施例提供的基于网络的视频重定向;Fig. 5 has schematically described network-based video redirection provided by an embodiment of the present invention;
图6示意性地描述了本发明一个实施例提供的视频帧和贴片(tile);Fig. 6 schematically describes a video frame and a patch (tile) provided by an embodiment of the present invention;
图7A示意性地描述了本发明一个实施例提供的视频重定向的流程;Figure 7A schematically describes the flow of video redirection provided by one embodiment of the present invention;
图7B示意性地描述了本发明另一实施例提供的视频重定向的流程;Fig. 7B schematically describes the flow of video redirection provided by another embodiment of the present invention;
图8示意性地描述了本发明另一实施例提供的基于网络的视频重定向的;以及Fig. 8 schematically describes network-based video redirection provided by another embodiment of the present invention; and
图9示意性地描述了本发明另一实施例提供的视频重定向的流程。Fig. 9 schematically describes the flow of video redirection provided by another embodiment of the present invention.
具体实施方式Detailed ways
以下例子更加详细地描述了本申请,这些例子只是用作说明性的,因为这些例子的各种修改和变形对于本领域技术人员来说是显而易见的。本发明不同的实施例此时将详细地描述。关于附图,整个附图中类似的编号,如果有的话,表示类似的结构。在此处的说明书中并贯穿后续的权利要求书,除非文中明确表明,“一”和“所述”的含义包含引用复数。同样,在此处的说明书中并贯穿后续的权利要求书,除非文中明确表明,“在…中”的含义包括“在…中”和“在…上”。而且,在说明书中使用的标题和子标题是用来方便读者,对于本申请的范围没有任何影响。另外,下面将更具体地定义说明书中使用的一些用语。The following examples describe the present application in more detail and are provided by way of illustration only as various modifications and variations of these examples will become apparent to those skilled in the art. Various embodiments of the invention will now be described in detail. With respect to the drawings, like numerals, if any, indicate like structures throughout the drawings. In the specification herein and throughout the claims that follow, the meanings of "a" and "the" include plural reference unless the context clearly dictates otherwise. Likewise, in the description herein and throughout the claims that follow, the meaning of "in" includes "in" and "on" unless the context clearly dictates otherwise. Moreover, the headings and subheadings used in the specification are for the convenience of the reader and have no impact on the scope of the application. In addition, some terms used in the specification will be more specifically defined below.
在本申请正文和用语使用的特定内容中,本说明书中使用的用语一般都是它们在本技术领域的通常含义。下面或说明书的其他地方将讨论一些本申请中使用的某些用语,以对本发明说明书的实践者(preactitioner)提供指引。为了方便,某些用语将会被强调,例如使用斜体和/或引号。使用强调并不影响用语的范围和含义;不管是否被强调,在相同的内容中,用语的范围和含义相同。应理解,相同的事情可以有多种不同的表述。因此,在此讨论的任何一个或多个用语可有替代的语言和同义词,用语是否在此提及或讨论并没有任何重大的影响。提供了某些用语的同义词。列举的一个或多个同义词并不排除还可以使用其他同义词。本说明书中任何地方使用的例子,包括此处讨论的任何用语的例子只是用来说明,并不是用于限制本申请或任何列举的用语的范围和含义。同样地,本申请并不能被限制为说明书中给出的各种实施例。In the text of the application and the specific content of terms used, the terms used in this specification generally have their usual meanings in the technical field. Certain terms used in this application are discussed below or elsewhere in the specification to provide guidance to the preactitioner describing the invention. For convenience, certain terms will be emphasized, for example using italics and/or quotation marks. The use of emphasis does not affect the scope and meaning of a term; the scope and meaning of a term are the same in the same context whether or not it is emphasized. It should be understood that the same thing can be expressed in many different ways. Accordingly, there may be alternative language and synonyms for any one or more terms discussed herein, without any material effect on whether a term is mentioned or discussed herein. Synonyms for certain terms are provided. The listing of one or more synonyms does not exclude that other synonyms may also be used. Examples used anywhere in this specification, including examples of any terms discussed herein, are for illustration only and are not intended to limit the scope and meaning of the application or of any listed term. Likewise, the present application should not be limited to the various examples given in the specification.
除非明确说明,此处使用的所有技术和科技术语具有本申请所述领域技术人员所理解的常用含义。如有矛盾,本申请文件,包括定义,将会控制。Unless defined otherwise, all technical and scientific terms used herein have the usual meaning as understood by one of ordinary skill in the art to which this application belongs. In case of conflict, the present specification, including definitions, will control.
通常,本申请使用的“左右”、“大约”或“近似”是指相对于给定值或范围偏差在20%以内,优选10%以内、更优选5%以内。此处给出的数字量是近似的,意味着如果没有明确指出,那么“左右”、“大约”或“近似”这些用语是可以推测的。Generally, "about", "approximately" or "approximately" used in this application means within 20%, preferably within 10%, more preferably within 5% of a given value or range. Numerical quantities given herein are approximate, meaning that terms such as "about," "approximately," or "approximately" are inferred if not expressly stated.
此中使用的“多个”意思是两个及以上。As used herein, "plurality" means two and more.
此中使用的用语“包括”、“包含”、“具有”、“含有”等是表示开放式的,意思是包括但不限于。The terms "comprising", "including", "having", "containing" and the like used herein are open-ended, meaning including but not limited to.
此中使用的短语A、B和C中的至少一个应理解为使用非排他的“或”逻辑的逻辑(A或B或C)。应理解,方法中包括的一个或多个步骤在不改变本申请的原理的前提下可以按照不同的顺序(或同时地)执行。As used herein, the phrase at least one of A, B, and C should be understood as a logical (A or B or C) using a non-exclusive OR logic. It should be understood that one or more steps included in a method may be executed in a different order (or simultaneously) without changing the principles of the present application.
此中使用的用语模块可指一部分或包括专用集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、执行代码的处理器(共享的、专用的或集群的)、提供所描述功能的其他合适的硬件组合,或以上部分或全部的组合,例如片上系统。用语模块可包括存储处理器执行的代码的存储器(共享的、专用的货集群的)。The term module as used herein may refer to a portion of or include an Application Specific Integrated Circuit (ASIC), an electronic circuit, a combinational logic circuit, a Field Programmable Gate Array (FPGA), a processor (shared, dedicated, or clustered) that executes code, Other suitable hardware combinations, or combinations of some or all of the above, providing the described functionality, such as a system on a chip. A module may include memory (shared, dedicated, or clustered) that stores code executed by a processor.
上述术语代码可包括软件、固件和/或微码,可指程序、线程、函数、类别和/或对象。上述术语共享的,意味着来自多个模块的一些或全部代码可使用单个(共享的)处理器执行。另外,来自多个模块的一些或全部代码可存储在单个(共享的)内存(memory)中。上述术语集群的,意味着来自单个模块的一些或全部代码可被一群处理器执行。另外,来自单个模块的一些或全部代码可存储在一群内存中。The above term code may include software, firmware and/or microcode and may refer to programs, threads, functions, classes and/or objects. The term shared above means that some or all code from multiple modules can be executed using a single (shared) processor. Additionally, some or all code from multiple modules may be stored in a single (shared) memory. The term clustered above means that some or all code from a single module can be executed by a group of processors. Additionally, some or all code from a single module may be stored in a cluster of memories.
此中描述的装置和方法可通过又一个或多个处理器执行的一个或多个计算机程序来实施。计算机程序包括存储在非暂时有形的计算机可读介质中的处理器可执行的指令。计算机指令还可包括所存储的数据。非暂时有形的计算机可读介质的非限制性例子包括非易失性存储器、磁存储器和光存储器。The apparatus and methods described herein may be implemented by one or more computer programs executed by one or more processors. A computer program includes processor-executable instructions stored in a non-transitory tangible computer readable medium. Computer instructions may also include stored data. Non-limiting examples of non-transitory tangible computer readable media include nonvolatile memory, magnetic storage, and optical storage.
以下将结合附图对本申请进行更加全面的描述,其中给出了本申请的实施例。然后,本申请可以各种不同的形式实施,而并不限于此中给出的实施例;更准确地说,这些实施例是用于使本申请能被完全和透彻地理解,并能使本领域技术人员完全明白本申请的范围。类似的标号表示类似的部件。The application will be described more fully below with reference to the accompanying drawings, in which embodiments of the application are shown. However, the present application can be implemented in various forms and is not limited to the examples given herein; rather, these examples are provided so that the present application can be fully and thoroughly understood and the present Those skilled in the art will fully appreciate the scope of the present application. Like reference numerals refer to like parts.
本申请涉及计算机系统。如附图中所描述的,计算机组件可包括用实线框表示物理的硬件部件和用虚线框表示的软件部件。本领域技术人员应理解,除非明确表示,这些计算机组件可实施成,但不限于软件形式、固件形式或硬件形式,或者是它们的组合。This application relates to computer systems. As depicted in the figures, computer components may include physical hardware components represented by solid lined boxes and software components represented by dashed lined boxes. It should be understood by those skilled in the art that unless explicitly indicated, these computer components may be implemented in, but not limited to, software, firmware or hardware, or a combination thereof.
图1示意性地描述了本发明一个实施例提供的基于网络的KVM重定向系统。如图1所示,系统100包括主机110,和通过网络130与主机110连接的计算设备140。系统100可并入一个以上互联系统,例如客户端-服务器网络。网络130可为有线或无线网络,且可为各种不同的形式,如局域网(LAN)或包括因特网的广域网(WAN)。Fig. 1 schematically describes a network-based KVM redirection system provided by an embodiment of the present invention. As shown in FIG. 1 , the system 100 includes a host 110 and a computing device 140 connected to the host 110 through a network 130 . System 100 may be incorporated into more than one interconnected system, such as a client-server network. Network 130 may be a wired or wireless network and may take various forms such as a local area network (LAN) or a wide area network (WAN) including the Internet.
主机110可为通用目的计算机系统。主机110包括基板111,或叫“主板”。基板111为印制电路板,通过系统总线或其他电通信路径,各种组件或设备可连接到基板上。尽管在图1中没有明确示出,基板111上的部件是相互连接的,并且部件在基板111上的布线以及部件在基板111上的相互连接方式在此称为基板111的配置。本领域技术人员应理解基板111的结构可以根据设计需求和制造要求进行调节和改变。Host 110 may be a general purpose computer system. The host 110 includes a substrate 111, or called "mainboard". The substrate 111 is a printed circuit board to which various components or devices may be connected via a system bus or other electrical communication paths. Although not explicitly shown in FIG. 1 , the components on the substrate 111 are interconnected, and the wiring of the components on the substrate 111 and the interconnection of the components on the substrate 111 are referred to herein as the configuration of the substrate 111 . Those skilled in the art should understand that the structure of the substrate 111 can be adjusted and changed according to design requirements and manufacturing requirements.
基板111上的部件包括但不限于中央处理器(CPU)112、内存113、基板控制器(BMC)120,以及其他要求的存储和输入/输出(I/O)模块(未示出)。CPU112、内存113和BMC120可嵌入在基板111中,或者可通过接口连接至基板111。在某些实施例中,接口可为物理硬件接口,例如电连接器、总线、端口、电缆、终端或其他I/O设备。Components on base board 111 include, but are not limited to, central processing unit (CPU) 112, memory 113, base board controller (BMC) 120, and other required storage and input/output (I/O) modules (not shown). The CPU 112, the memory 113, and the BMC 120 may be embedded in the substrate 111, or may be connected to the substrate 111 through an interface. In some embodiments, an interface may be a physical hardware interface, such as an electrical connector, bus, port, cable, terminal, or other I/O device.
CPU112是主处理器,用于控制主机110的运行。主处理器可执行操作系统(OS)或主机110的其他应用。在一些实施例中,主机110可具有不止一个用作主处理器的CPU,例如两个CPU、四个CPU、八个CPU或任何合适数量的CPU。The CPU 112 is a main processor for controlling the operation of the host computer 110 . The main processor may execute an operating system (OS) or other applications of the host 110 . In some embodiments, host 110 may have more than one CPU acting as the main processor, such as two CPUs, four CPUs, eight CPUs, or any suitable number of CPUs.
内存113可包括易失性存储器,例如随机存取存储器(RAM),用于存储主机110运行期间的数据和信息。The memory 113 may include volatile memory, such as random access memory (RAM), for storing data and information during operation of the host 110 .
BMC120是指管理系统管理软件和平台硬件之间的接口的专用微控制器。系统100中可构建各种不同类型的传感器,而BMC120读取这些传感器以获得例如温度、散热风扇速度、功率状态、操作系统(OS)状态等参数。BMC120监控传感器,并且如果任何参数不在预设限制内该BMC120能通过网络将警报发送至系统管理员,以指示系统100的潜在故障。管理员还可远程与BMC120通信以采取正确措施,例如重置或重启系统以使挂起的操作系统重新运行。进一步地,BMC120可包括KVM重定向模块122,用于在计算设备140和主机110之间重定向视频和输入信号。因此,用户可从计算设备140发起KVM会话,以查看主机110的视频输出,并通过计算设备140的输入设备在主机110上输入数据。BMC120 refers to a dedicated microcontroller that manages the interface between system management software and platform hardware. Various different types of sensors can be built into the system 100 and read by the BMC 120 to obtain parameters such as temperature, cooling fan speed, power status, operating system (OS) status, and the like. The BMC 120 monitors the sensors and if any parameter is not within preset limits the BMC 120 can send an alert over the network to the system administrator, indicating a potential failure of the system 100 . Administrators can also remotely communicate with the BMC120 to take corrective action, such as resetting or rebooting the system to bring a hung operating system back into operation. Further, BMC 120 may include a KVM redirection module 122 for redirecting video and input signals between computing device 140 and host 110 . Thus, a user can initiate a KVM session from computing device 140 to view the video output of host 110 and enter data on host 110 through the input devices of computing device 140 .
在某些实施例中,BMC120的固件遵守用于系统监控和故障恢复的智能平台管理接口(IPMI)行业标准。IPMI协议是用于计算机系统带外管理和运行监控的标准化的计算机系统接口协议,该协议是基于会话的,要求在应用模块能与目标IPMI设备通信之前建立应用模块与目标IPMI设备之间的IPMI会话。IPMI规范提供用于访问兼容计算机的所有可管理特性的基于通用消息的接口,并包括大量的预定指令用于读取温度、压力、风扇速度、机箱扰动和其他参数。系统故障日志、硬件监视器以及功率控制也可通过IPMI获取。这样,IPMI定义了用于获取BMC通过操作系统或通过外部连接,如通过网络或串口连接收集的各种参数。BMC可通过系统接口从局部连接的管理计算机接收IPIM指令或请求,或通过网络接口从局部连接的管理计算机接收外部请求。In some embodiments, the firmware of BMC 120 complies with the Intelligent Platform Management Interface (IPMI) industry standard for system monitoring and fault recovery. The IPMI protocol is a standardized computer system interface protocol for out-of-band management and operation monitoring of computer systems. The protocol is session-based and requires the establishment of an IPMI between the application module and the target IPMI device before the application module can communicate with the target IPMI device. session. The IPMI specification provides a generic message-based interface for accessing all manageable features of a compatible computer, and includes a large number of predefined commands for reading temperature, pressure, fan speed, chassis disturbance, and other parameters. System fault logs, hardware monitors, and power controls are also available through IPMI. Thus, IPMI defines various parameters for obtaining BMC collected through the operating system or through an external connection, such as through a network or a serial port connection. The BMC can receive IPIM commands or requests from the locally connected management computer through the system interface, or receive external requests from the locally connected management computer through the network interface.
此外,在某些实施例中,BMC120包括KVM重定向模块122、网络套接字模块124和网络服务器模块126。KVM模块122执行KVM重定向功能。网络套接字模块124可在网络套接字协议下通过单传输连接协议(TCP)连接建立全双工通信通道。网络服务器模块126可提供通过因特网可访问的网络内容。各模块的细节将后续描述。Additionally, in some embodiments, BMC 120 includes a KVM redirection module 122 , a web socket module 124 and a web server module 126 . The KVM module 122 performs KVM redirection functions. The network socket module 124 can establish a full-duplex communication channel through a single transport connection protocol (TCP) connection under the network socket protocol. The web server module 126 may provide web content accessible through the Internet. The details of each module will be described later.
进一步地,主机110包括存储器114和至少一个I/O设备116。存储器114为用于存储主机110的操作系统(未示出)和其他应用的数据存储介质。存储器114的例子可包括闪存、内存卡、USB驱动器、硬盘驱动器、软盘、光驱或其他类型的数据存储器。I/O设备116的例子包括键盘、触摸屏、鼠标、麦克风、显示屏、触摸屏或可用于主机110的其他I/O设备。Further, the host 110 includes a memory 114 and at least one I/O device 116 . The memory 114 is a data storage medium for storing an operating system (not shown) of the host 110 and other applications. Examples of memory 114 may include flash memory, memory cards, USB drives, hard drives, floppy disks, optical drives, or other types of data storage. Examples of I/O devices 116 include a keyboard, touch screen, mouse, microphone, display screen, touch screen, or other I/O devices available to host 110 .
计算设备140通过网络130远程连接至主机110。本领域技术人员应该理解,系统100可能包括多个同时远程连接至主机110的计算设备140。计算设备140的例子包括,例如便携式设备,例如智能手机、掌上电脑或其他可移动计算机设备。Computing device 140 is remotely connected to host 110 through network 130 . Those skilled in the art should understand that the system 100 may include multiple computing devices 140 remotely connected to the host 110 at the same time. Examples of computing device 140 include, for example, portable devices such as smartphones, PDAs, or other removable computing devices.
计算设备140包括CPU171、内存173和存储器142。存储器142是用于存储计算设备140的操作系统或其他应用的数据存储介质。计算设备140的存储器142的例子可包括闪存、内存卡、USB驱动器、硬盘驱动器、软盘、光盘或其他类型的数据存储器。Computing device 140 includes CPU 171 , memory 173 and storage 142 . Memory 142 is a data storage medium for storing an operating system or other applications of computing device 140 . Examples of memory 142 of computing device 140 may include flash memory, a memory card, a USB drive, a hard drive, a floppy disk, an optical disk, or other types of data storage.
浏览器程序143可被下载到内存173中并可被计算设备140的CPU171执行。浏览器程序143是用于获取、呈现并将信息资源传送给用户的软件应用。进一步地,浏览器程序143可作为系统110的用于与BMC120通信的KVM重定向客户端。一般来说,浏览器程序143可获取提供在开放网络,例如因特网上的信息资源。信息资源可包括网页、图片、视频或其他类型的数据内容。The browser program 143 can be downloaded into the memory 173 and can be executed by the CPU 171 of the computing device 140 . Browser program 143 is a software application for acquiring, presenting, and delivering information resources to users. Further, the browser program 143 can serve as a KVM redirection client for the system 110 to communicate with the BMC 120 . In general, the browser program 143 can obtain information resources provided on an open network, such as the Internet. Information resources may include web pages, pictures, videos, or other types of data content.
进一步地,内存173可装载操作系统114和网络套接字模块145。网络套接字模块145是与主机110上的BMC120的网络套接字模块124对应的模块,从而可建立BMC120和计算设备140之间的在网络套接字协议下的全双工通信通道。Further, the memory 173 can load the operating system 114 and the network socket module 145 . The network socket module 145 is a module corresponding to the network socket module 124 of the BMC 120 on the host 110 , so that a full-duplex communication channel under the network socket protocol can be established between the BMC 120 and the computing device 140 .
进一步地,计算设备140包括至少一个I/O设备146。I/O设备146的例子包括键盘、触摸屏、鼠标、麦克风、显示屏、触摸屏或适用于计算设备140的其他I/O设备。一些I/O设备,例如触摸屏用于提供计算设备140的双向输入/输出。Further, computing device 140 includes at least one I/O device 146 . Examples of I/O devices 146 include keyboards, touch screens, mice, microphones, display screens, touch screens, or other I/O devices suitable for computing device 140 . Some I/O devices, such as touch screens, are used to provide bi-directional input/output to computing device 140 .
为了显示如网页和使用浏览器程序143的其他数据内容的信息资源,超文本标记语言(HTML)是基于网络语言格式中的标准化的标记语言,用于显示网页和能在浏览器程序143中显示的其他信息。HTML格式的数据使用HTML要素或“标记”的形式书写的,在网页内容中,其被括在尖角括号中(例如<html>)。目前,HTML格式被几乎所有的市场上的浏览器程序所广泛采用,因此它适合作为在计算设备140侧的浏览器程序143和主机110侧的BMC120的网络服务器126之间的通信指令的基于网络的语言格式。For displaying information resources such as web pages and other data content using the browser program 143, Hypertext Markup Language (HTML) is a standardized markup language based on the web language format used to display web pages and can be displayed in the browser program 143 additional information for . Data in HTML format is written using HTML elements, or "tags," which are enclosed in angle brackets (eg <html>) within web content. Currently, the HTML format is widely adopted by almost all browser programs on the market, so it is suitable as a web-based communication command between the browser program 143 on the computing device 140 side and the web server 126 of the BMC 120 on the host computer 110 side. language format.
一般来说,除了HTML格式语言外,如JavaScript的脚本语言被用来控制用户接口的输入和输出。进一步地,HTML语言最新开发的版本HTML5为网络存储提供了大量的性质,它运用了用于通过网络浏览器存储数据的网络应用软件方法和协议。以前常用的浏览器程序不支持HTML5格式,但是支持HTML5格式的浏览器程序包括MOZILLAFIREFOX1.5、GOOGLECHROME4.0、SAFARI3.1、SAFARIMOBILE3.2、OPERA9.0、OPERAMOBILE10.0、ANDROIDBROWSER2.1以及INTERNETEXPLORER9.0,或者是这些浏览器程序的任何更新的版本。因此,浏览器程序143可支持HTML5并可为以上列出的浏览器程序中的一种。Generally, in addition to the HTML format language, a scripting language such as JavaScript is used to control input and output of a user interface. Further, HTML5, a newly developed version of the HTML language, provides a large number of properties for web storage, which utilizes web application software methods and protocols for storing data through web browsers. Previously commonly used browser programs do not support HTML5 format, but browser programs that support HTML5 format include MOZILLAFIREFOX1.5, GOOGLECHROME4.0, SAFARI3.1, SAFARIMOBILE3.2, OPERA9.0, OPERAMOBILE10.0, ANDROIDBROWSER2.1 and INTERNETEXPLORER9. 0, or any newer versions of these browser programs. Accordingly, the browser program 143 may support HTML5 and may be one of the browser programs listed above.
浏览器程序143可使用超文本传输协议(HTTP)与BMC上的网络服务器126通信。具体地,浏览器程序143可发送HTTP请求至网络服务器126。一旦接收到HTTP请求之后,服务器会发送HTTP应答到浏览器程序以响应HTTP请求。Browser program 143 may communicate with web server 126 on the BMC using hypertext transfer protocol (HTTP). Specifically, the browser program 143 can send an HTTP request to the web server 126 . Once the HTTP request is received, the server sends an HTTP response to the browser program in response to the HTTP request.
通常,在HTTP下,网络服务器126不能向浏览器程序143发起数据传输。网络套接字可提供单TCP连接上的全双工通信通道,从而服务器可主动发送指令或信息至客户端。网络套接字被并入到HTML5中,因此其可被实施HTML5的网络浏览器和服务器支持。Normally, under HTTP, the web server 126 cannot initiate data transmissions to the browser program 143 . The network socket can provide a full-duplex communication channel on a single TCP connection, so that the server can actively send instructions or information to the client. Web sockets are incorporated into HTML5 so they can be supported by web browsers and servers implementing 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。FIG. 2 shows a process of establishing a network socket connection between the host 110 and the computing device 140 provided by an embodiment of the present invention. A web socket connection is initiated in a similar manner to an HTTP connection, but provides a continuous bi-directional network-based connection between the host computer 110 and the browser program 124 . When the browser program 143 tries to establish a web socket connection, the browser program 143 instructs the web socket module 145 to send a web socket handshake request to port 80 (the default HTTP port) or the web socket module 124 of the BMC 120 port 443 (HTTPS port). A web socket handshake request is similar to the GET command used in HTTP requests, but it includes more web socket commands and can be considered an "upgraded" request. Once the web socket handshake request is received, the web server 126 can recognize that the request is a web socket handshake request instead of an HTTP request according to the updated information in the web socket handshake request. The web server 126 sends the handshake response message to the browser program 143 . Accordingly, a web socket connection 150 between the browser program 143 and the web server 126 may be established.
图3A和3B提供了网络套接字握手请求和HTTP请求之间的对比,其中图3A示出了使用GET指令的HTTP请求的一个例子,而图3B则示出了网络套接字握手请求的一个例子。如图3A所示,响应HTTP请求的应答信息的头部指示应答信息中的内容的信息,包括内容的类型为文本/网页文件、内容文件的长度以及内容中使用的语言。响应HTTP请求的应答信息的头部的最后一行用于指示在应答的末端关闭主机110和浏览器程序124之间的连接。相比来说,图3B中所示的网络套接字握手请求的前两行包含与HTTP请求相同的GET指令。网络套接字握手请求的随后的行包括升级的信息,用于通知网络套接字模块124进行升级或从常规HTTP请求切换至网络套接字协议。进一步地,与响应HTTP请求的应答信息不同,响应于网络套接字握手请求的握手应答信息的头部不指示在响应的末端关闭连接。Figures 3A and 3B provide a comparison between a web socket handshake request and an HTTP request, where Figure 3A shows an example of an HTTP request using the GET instruction, while Figure 3B shows an example of a web socket handshake request one example. As shown in FIG. 3A , the header of the response information in response to the HTTP request indicates content information in the response information, including the type of the content as text/webpage file, the length of the content file, and the language used in the content. The last line of the header of the response message in response to the HTTP request is used to indicate that the connection between the host 110 and the browser program 124 is closed at the end of the response. In contrast, the first two lines of the web socket handshake request shown in Figure 3B contain the same GET instruction as the HTTP request. Subsequent lines of the web socket handshake request include upgrade information for notifying the web socket module 124 to upgrade or switch from regular HTTP requests to the web socket protocol. Further, unlike the response information in response to the HTTP request, the header of the handshake response information in response to the web socket handshake request does not indicate to close the connection at the end of the response.
一旦建立了网络套接字连接150,网络套接字模块124和网络套接字模块145都可通过连接发送数据至另一端。数据格式可为任何有效的UTF-8字符串格式,例如JSON或XML,但是如果想用的话其他数据格式也可使用。Once the web socket connection 150 is established, both the web socket module 124 and the web socket module 145 can send data over the connection to the other end. The data format can be any valid UTF-8 string format, such as JSON or XML, but other data formats can be used if desired.
网络套接字模块124和145可为各种类型和设计,例如PHP网络套接字、Java网络套接字、Web-Socket-ruby、套接字输入输出模式(SocketIO-mode),或其他类型的网络套接字应用。为了将网络套接字模块124设置为主机110侧的网络套接字服务器,必须提供主机110及使用的端口(例如端口80或443)的域名或IP地址以指示主机110的位置,并且必须建立多个指令以响应某些“事故”,例如打开套接字(即网络套接字连接)、接收套接字中的握手请求或其他信息或者关闭套接字。当建立了网络套接字服务器时,网络套接字客户端可使用统一资源定位地址(URL)连接至网络套接字服务器,统一资源定位地址体系开头为“ws”,替代常规HTTP体系的开头“http”;或者是统一资源定位地址体系开头为“wss”,替代常规HTTP体系的开头“https”。The network socket modules 124 and 145 can be of various types and designs, such as PHP network socket, Java network socket, Web-Socket-ruby, socket input and output mode (SocketIO-mode), or other types web socket application. In order to set the web socket module 124 as a web socket server on the host 110 side, the domain name or IP address of the host 110 and the port used (such as port 80 or 443) must be provided to indicate the location of the host 110, and a Multiple instructions in response to certain "accidents", such as opening a socket (i.e. a web socket connection), receiving a handshake request or other information in a socket, or closing a socket. When the web socket server is established, the web socket client can use the uniform resource location address (URL) to connect to the web socket server. The uniform resource location address system starts with "ws", which replaces the beginning of the regular HTTP system "http"; or "wss" at the beginning of the Uniform Resource Locator address system, replacing the beginning "https" of the conventional HTTP system.
图4示出了本发明一个实施例提供的基于网络的KVM重定向。如图4所示,在BMC和计算设备140之间建立网络套接字连接150。主机110可以包括用于输出视频信号的视频控制器117以及重定向控制器118,作为视频重定向的I/O端口。本实施例中,BMC120的KVM重定向模块122分别与重定向控制器118以及I/O控制器116连接。KVM重定向模块可以接收来自重定向控制器的重定向视频帧,并发送键盘和鼠标输入信号至I/O控制器116。FIG. 4 shows network-based KVM redirection provided by an embodiment of the present invention. As shown in FIG. 4 , a network socket connection 150 is established between the BMC and computing device 140 . The host 110 may include a video controller 117 for outputting video signals and a redirection controller 118 as an I/O port for video redirection. In this embodiment, the KVM redirection module 122 of the BMC 120 is connected to the redirection controller 118 and the I/O controller 116 respectively. The KVM redirection module can receive redirected video frames from the redirection controller and send keyboard and mouse input signals to the I/O controller 116 .
计算设备140包括显示设备147以及输入设备,例如键盘148、鼠标149以及触摸屏。虽然并未示出,然而该主机110和计算设备140可以包括其他元件来执行基于网络的KVM重定向。The computing device 140 includes a display device 147 and input devices such as a keyboard 148, a mouse 149, and a touch screen. Although not shown, the host 110 and computing device 140 may include other elements to perform network-based KVM redirection.
图5概略性地示出了根据了本发明某些实施例中的基于网络的KVM重定向。如图所示,主机110具有用于输出视频信号的视频控制器117。例如,视频信号可以输出到显示设备中用于显示。视频控制器117与重定向控制器118通信连接,用于捕捉视频信号并产生视频帧。重定向控制器随后发送视频帧至BMC120的KVM重定向模块122。Fig. 5 schematically illustrates network-based KVM redirection in some embodiments of the present invention. As shown, the host 110 has a video controller 117 for outputting video signals. For example, video signals may be output to a display device for display. Video controller 117 is in communication with redirection controller 118 for capturing video signals and generating video frames. The redirection controller then sends the video frames to the KVM redirection module 122 of the BMC 120 .
例如,KVM重定向模块122接收来自主机的视频帧152和154,对该视频帧进行处理,并产生重定向图像,随后发送重定向图像至网络服务器。一旦接收到来自在计算设备140中运行的浏览器的请求时,该网络服务器将发送KVM重定向网页至浏览器。在网页的指示下,该浏览器将从网络服务器中重新获得(retrieve)重定向图像。For example, the KVM redirection module 122 receives the video frames 152 and 154 from the host, processes the video frames, generates a redirection image, and then sends the redirection image to the network server. Upon receiving a request from a browser running on computing device 140, the web server will send a KVM redirect web page to the browser. Under the direction of the web page, the browser will retrieve (retrieve) the redirected image from the web server.
在某些实施例中,网络服务器配置为用于利用HTML5支持的画布(canvas)来生成KVM重定向网页。重定向网页包括canvas标签,该标签定义了浏览器显示页面的可绘制区域。该canvas标签为由HTML5所提供的其中一个元素之一,用于产生图像以及视频文件,并允许形状和位图图像动态的且可编写脚本的渲染。Canvas标签定义了可绘制区域的高度和宽度属性。JavaScript代码可通过一整套绘图功能进入可绘制区域,并在由canvas标签所定义的可绘制区域上动态地显示所生成的图像。Canvas标签自身并没有绘图的能力,并可以看作图像的容器。通常地,Canvas标签具有ID,该ID能够被JavaScript代码所参考。图5示出了由浏览器程序143所渲染的KVM重定向页面具有画布。In some embodiments, the web server is configured to generate a KVM redirection web page using an HTML5 supported canvas. The redirected web page includes the canvas tag, which defines the drawable area where the browser displays the page. The canvas tag is one of the elements provided by HTML5 for generating images and video files, and allows dynamic and scriptable rendering of shapes and bitmap images. The Canvas tag defines the height and width properties of the drawable area. JavaScript code can access the drawable area through a set of drawing functions and dynamically display the generated image on the drawable area defined by the canvas tag. The Canvas tag itself does not have the ability to draw, and can be regarded as a container for images. Typically, a Canvas tag has an ID that can be referenced by JavaScript code. FIG. 5 shows that the KVM redirection page rendered by the browser program 143 has a canvas.
基于用户输入的配置信息,或者可选择地默认配置,网络服务器可以在KVM重定向网页中设置画布的尺寸。例如,用户可期望其具有与视频控制器输出的视频帧的分辨率相同的分辨率。换言之,由视频控制器输出的视频帧的每一像素在画布上具有各自对应的像素。例如,如果视频帧的视频像素为1024*768,则由canvas标签定义的画布可相应地设置成宽为1024,高为768。再如,用户可期望具有视频帧分辨率的一半。因此,如果视频帧的视频分辨率为1024*768,则由canvas标签定义的画布则设置为宽度512,且高度384。通常地,以下的描述中,视频帧分辨率和画布分辨率之间使用一对一的对应关系作为例子。本领域技术人员应当理解,以下讨论的技术同样地应用于分辨率与视频帧的分辨率具有其他对应关系的画布。Based on configuration information entered by the user, or optionally a default configuration, the web server can set the size of the canvas in the KVM redirection web page. For example, the user may expect it to have the same resolution as the video frame output by the video controller. In other words, each pixel of the video frame output by the video controller has a respective corresponding pixel on the canvas. For example, if the video pixels of a video frame are 1024*768, the canvas defined by the canvas tag can be set to have a width of 1024 and a height of 768 accordingly. As another example, a user may desire to have half the resolution of a video frame. Therefore, if the video resolution of the video frame is 1024*768, the canvas defined by the canvas tag is set to a width of 512 and a height of 384. Generally, in the following description, a one-to-one correspondence between video frame resolution and canvas resolution is used as an example. Those skilled in the art should understand that the techniques discussed below are equally applicable to canvases whose resolutions have other correspondences with video frame resolutions.
KVM重定向模块122接收来自主机110的重定向控制器118的第一和第二视频帧152和154。当第一帧152为由KVM重定向模块接收到的起始帧时,即KVM重定向模块122先前并未接收到视频帧,则KVM重定向模块产生具有第一帧152内所有像素信息的第一重定向图像157,并将该第一重定向图像157发送至网络服务器126。重定向图像为浏览器程序143可渲染的格式。网络服务器126随后通过以下描述的技术将第一重定向图像157发送至浏览器程序。KVM redirection module 122 receives first and second video frames 152 and 154 from redirection controller 118 of host 110 . When the first frame 152 was the initial frame received by the KVM redirection module, that is, the KVM redirection module 122 did not receive a video frame before, then the KVM redirection module produced the first frame with all pixel information in the first frame 152. a redirection image 157 and send the first redirection image 157 to the web server 126 . The redirected image is in a format that the browser program 143 can render. The web server 126 then sends the first redirection image 157 to the browser program through the techniques described below.
在接收到第二视频帧154时,KVM重定向模块122将第二帧154与KVM重定向模块122中保留的第一帧152的副本进行比较,并检测在第一帧和第二帧的任意对应像素中是否存在不同的值。当检测到不同时,KVM重定向模块122生成包含有与第一帧152的对应像素不同的第二帧154的相关像素的像素信息的补丁(patch),并将该补丁发送至网络服务器。如以下详细地描述,网络服务器126将补丁发送至计算设备140的浏览器程序143中,且浏览器程序143相应地可以对在对应区域170和172中的画布进行修补。Upon receiving the second video frame 154, the KVM redirection module 122 compares the second frame 154 with the copy of the first frame 152 retained in the KVM redirection module 122, and detects any discrepancy between the first frame and the second frame. Whether there are different values in the corresponding pixels. When a difference is detected, the KVM redirection module 122 generates a patch (patch) containing the pixel information of the relevant pixel of the second frame 154 that is different from the corresponding pixel of the first frame 152 , and sends the patch to the network server. As described in detail below, web server 126 sends the patch to browser program 143 of computing device 140 , and browser program 143 may patch the canvases in corresponding regions 170 and 172 accordingly.
图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。贴片位置由视频帧的坐标来表明;其中,该贴片位置包含在贴片参数内。贴片的位置典型地定义成贴片左上角的位置(例如坐标)。FIG. 6 shows a first video frame 152 and a second video frame 154 . In this example, the KVM redirection module 122 divides each video frame into 30 tiles, wherein the 30 tiles form a matrix form with 5 rows and 6 columns. The number of tiles is configurable. For example, the default patch configuration can be a 16*16 matrix. The KVM redirection module 122 compares the pixel values of the first video frame and the second video frame on a pixel-by-pixel basis. In other words, the KVM redirection module 122 determines whether the value of any pixel of the second video frame is different from the value of the corresponding pixel of the first video frame. If any pixel within the tile of the second video frame 154 has changed compared to the corresponding pixel of the first image frame 152, the KVM redirection module 122 determines that the tile has changed. For example, as shown in FIG. 6 , compared to the first frame 152, the tiles 615′, 625′, 622′, 623′, 632′, 633′, 642′, and 643′ of the second frame have changed. The KVM redirection module 122 therefore sends only the pixel values of the tiles 622', 623', 632', 633', 642', 643', 615' and 625' as tile images and the tile parameters to the web server 126 . The tile position is indicated by the coordinates of the video frame; wherein, the tile location is included in the tile parameter. The location of a tile is typically defined as the location (eg, coordinates) of the upper left corner of the tile.
网络服务器126接收贴片坐标作为贴片参数的一部分,并且确定是否需要将贴片图像的视频帧坐标转换成浏览器坐标,以供浏览器程序对当前渲染的重定向图像进行正确的修补。例如,由网络服务器接收的贴片参数(x,y,W,H)可以表明贴片的位置处于视频帧的坐标(x,y)上,并且该贴片宽度为W,高度为H。宽度和高度参数为可选择的。The web server 126 receives the patch coordinates as a part of the patch parameters, and determines whether to convert the video frame coordinates of the patch image into browser coordinates, so that the browser program can correct the currently rendered redirected image. For example, the tile parameter (x, y, W, H) received by the web server may indicate that the location of the tile is at the coordinate (x, y) of the video frame, and the tile has a width of W and a height of H. The width and height parameters are optional.
当画布的分辨率配置为与视频帧的分辨率具有一对一的对应关系时,即视频帧的每个像素在画布上分别具有对应像素时,则网络服务器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。When the resolution of the canvas is configured to have a one-to-one correspondence with the resolution of the video frame, that is, each pixel of the video frame has a corresponding pixel on the canvas, then the network server 126 can determine the tile parameter (x , y, W, H) can also be used directly by the canvas without transformations to patch patches on the canvas. The web server can convert the tile image received from the KVM redirection module 122 into a different format that the browser program 143 can render. The patch image can be in different image or picture file formats, such as commonly used JPEG, PNG or BMP formats, or other image file formats that can be displayed by the browser program 143 . The web server 126 then sends the tile image with tile parameters to the browser program 143 as described below. The browser program 143 accordingly uses the tile image to patch the canvas within the area specified by the tile parameter. For example, a redirect webpage generated by a web server may have JavaScript code for instructing the browser to patch a tile image on the canvas, eg context.drawlmage(tile, x, y, W, H). When the resolution of the canvas is configured to have other ratios (such as 1:2) relative to the resolution of the video frame, then the web server 126 can convert the video frame coordinates into browser coordinates (such as x/2, y/ 2, W/2, H/2). FIG. 5 shows browser program 143 initially displaying first redirection image 157 on canvas 160 . After the BMC 120 sends the patch including one or more patches 170 and 172 to the browser program 143 , the browser program 143 then patches the first redirected image 157 to generate the second redirected image 159 .
网络服务器126可以通过多种方式将贴片图像发送至浏览器程序143。例如,网络服务器126可以在该网络服务器的预定位置存储贴片图像及其贴片参数。由网络服务器126生成的重定向网页可以指示浏览器程序143周期性地检查预定位置,以确定是否有新的补丁可用。可选择地,重定向网页可以指示浏览器程序143与网络服务器建立网络套接字连接,而网络服务器随后可以将具有贴片参数的贴片图像通过网络套接字连接发送至浏览器程序143。The web server 126 can send the sticker image to the browser program 143 in various ways. For example, the network server 126 may store the patch image and its patch parameters at a predetermined location of the network server. The redirection web page generated by web server 126 may instruct browser program 143 to periodically check a predetermined location to determine if a new patch is available. Optionally, the redirected webpage may instruct the browser program 143 to establish a network socket connection with the web server, and the network server may then send the patch image with patch parameters to the browser program 143 through the network socket connection.
在某些实施例中,贴片图像可以为各种格式,例如PNG、BMP、JPEG等。网络服务器126可以通过标识符(identifier),例如数值或字母来识别视频帧的每个贴片。网络服务器126可以将贴片图像及其标识符通过网络套接字连接150发送至浏览器程序143。例如,网络服务器126可以发送贴片图像#5至浏览器程序143。浏览器程序143上的画布160可以分成与视频帧的贴片相对应的贴片。换言之,每个贴片标识符也可以识别画布160上的单个贴片。由浏览器程序143渲染的重定向网页对应地具有JavaScript路径,该JavaScript路径可将接收到的贴片图像绘制在由标识符识别的画布160上的贴片区域内。在接收到贴片图像#5后,重定向网页对应地指示浏览器程序在画布上标识为#5的区域中绘制贴片图像(例如,PNG、JPEG或BMP格式)。In some embodiments, the tile image can be in various formats, such as PNG, BMP, JPEG, and so on. The web server 126 may identify each tile of the video frame by an identifier, such as a numerical value or a letter. Web server 126 may send the tile image and its identifier to browser program 143 via web socket connection 150 . For example, the web server 126 may send the sticker image #5 to the browser program 143 . The canvas 160 on the browser program 143 may be divided into tiles corresponding to tiles of video frames. In other words, each tile identifier may also identify a single tile on canvas 160 . The redirected web page rendered by the browser program 143 correspondingly has a JavaScript path that can draw the received tile image in the tile area on the canvas 160 identified by the identifier. After receiving the tile image #5, the redirection webpage correspondingly instructs the browser program to draw the tile image (for example, PNG, JPEG or BMP format) in the area marked as #5 on the canvas.
图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对应地设置(setup)KVM重定向模块122。KVM重定向模块可以与主机110的重定向控制器118建立连接。Fig. 7A shows the flow of video redirection using web socket connection and HTML5 canvas according to some embodiments of the present invention. In operation 710 , the browser program 143 sends a request for the KVM redirection web page to the BMC 120 through the network 130 . The request may be in HTTP format. Once the request for the KVM redirection webpage is received, the web server 126 of the BMC 120 sends the KVM redirection webpage to the browser program 143 in operation 720 . Accordingly, the browser program 143 may display a KVM redirection webpage to the user, enabling the user of the computing device 140 to input or select configuration information of the KVM redirection module 122 of the BMC 120 in operation 722 . The configuration information for the KVM redirection module may include redirection image resolution information, redirection image refresh rate information, machine and network settings, authentication settings, and other information for KVM redirection. Then, in operation 724 , the browser program 143 sends the configuration information to the web server 126 of the BMC 120 , for example, using the HTTP protocol. Once receiving the configuration information, the web server 126 correspondingly sends the configuration information to the KVM redirection module. In operation 730, the BMC 120 sets up the KVM redirection module 122 accordingly. The KVM redirection module can establish a connection with the redirection controller 118 of the host computer 110 .
在操作760中,浏览器程序143发送网络套接字握手请求至网络服务器126,以在网络套接字协议下建立全双工通信连接。一旦接收到网络套接字握手请求后,在操作762中,网络服务器126指示网络套接字模块124打开网络套接字。类似地,在操作764中,浏览器程序143指示网络套接字模块145打开网络套接字。因此,在操作766中,在网络套接字模块124和网络套接字模块145之间建立了网络套接字连接。In operation 760, the browser program 143 sends a web socket handshake request to the web server 126 to establish a full-duplex communication connection under the web socket protocol. Upon receiving the web socket handshake request, in operation 762 the web server 126 instructs the web socket module 124 to open the web socket. Similarly, in operation 764, the browser program 143 instructs the web socket module 145 to open the web socket. Accordingly, in operation 766 a web socket connection is established between the web socket module 124 and the web socket module 145 .
一旦建立了网络套接字连接,则BMC120可以开始对主机110输出的视频通过网络套接字连接重定向至浏览器程序143。特别地,在操作770中,KVM重定向模块接收主机110的第一视频帧。KVM重定向模块随后处理该第一视频帧,以生成第一重定向图像,并将该第一重定向图像发送至网络服务器126中。在操作772中,网络服务器126将第一重定向图像发送至网络套接字模块124。在操作774中,网络套接字模块124将第一重定向图像通过网络套接字连接发送至计算设备的网络套接字模块145中。在操作776中,网络套接字模块145将第一重定向图像发送至浏览器程序143。在操作778中,浏览器程序143随后可以如重定向网页所指示的在画布160上显示第一重定向图像。Once the network socket connection is established, the BMC 120 can start redirecting the video output from the host 110 to the browser program 143 through the network socket connection. Specifically, in operation 770 , the KVM redirection module receives the first video frame of the host 110 . The KVM redirection module then processes the first video frame to generate a first redirection image, and sends the first redirection image to the network server 126 . In operation 772 , the web server 126 sends the first redirected image to the web socket module 124 . In operation 774, the web socket module 124 sends the first redirected image to the web socket module 145 of the computing device through the web socket connection. In operation 776 , the web socket module 145 sends the first redirection image to the browser program 143 . In operation 778, the browser program 143 may then display the first redirected image on the canvas 160 as indicated by the redirected web page.
随后,在操作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重定向网页指示的,将画布上的第一重定向图像在由贴片参数指明的区域内采用接收到的贴片图像进行修补。Subsequently, the KVM redirection module 122 receives the second video frame from the host 110 in operation 780 . The KVM redirection module 122 then compares the second video frame with the first video frame to determine whether each pixel of the second video frame has a different pixel value than the corresponding pixel of the first video frame. If any pixel in the second video frame changes, the KVM redirection module 122 correspondingly generates one or more tile images and related tile parameters. The KVM redirection module 122 sends the patch image and patch parameters to the network server 126 . The web server then converts the tile image to a format supported by the browser program 143, if necessary. In operation 782 , the web server 126 of the BMC 120 sends the tile image and parameters to the web socket module 124 . In operation 784, the web socket module 124 sends the tile image and parameters to the web socket module 145 through the web socket connection. In operation 786 , the web socket module 145 transmits the tile image and parameters to the browser program 143 . In operation 788, the browser program 143 may patch the first redirected image on the canvas with the received tiled image within the area specified by the tiled parameter as indicated by the KVM redirected webpage.
图7B示出了根据本发明某些实施例中的采用网络套接字连接150和特定图像处理技术进行视频重定向的流程。在本例中,KVM重定向模块122初始地将代表第一帧的第一重定向图像推向(forwads)至浏览器程序143。浏览器程序143相应地可在浏览器程序143的显示区域161显示第一重定向图像。随后,KVM重定向模块122可以使用不同的编码和压缩技术来处理代表第二帧154的第二重定向图像。已处理(即已编码以及已压缩)的第二重定向图像随后通过网络套接字连接150传输至浏览器程序143。由浏览器程序143接收到的重定向网页包括可以用于指示浏览器程序143来对已处理的第二重定向图像进行解压和解码的JavaScript路径。在浏览器程序143对已处理的第二重定向图像进行解压和解码以获得显示图像后,该浏览器程序143可以在浏览器程序143的显示区域显示该图像。FIG. 7B shows a flow of video redirection using a network socket connection 150 and specific image processing techniques according to some embodiments of the present invention. In this example, KVM redirection module 122 initially forwads to browser program 143 a first redirection image representing the first frame. Correspondingly, the browser program 143 can display the first redirection image in the display area 161 of the browser program 143 . KVM redirection module 122 may then process a second redirected image representing second frame 154 using a different encoding and compression technique. The processed (ie encoded and compressed) second redirected image is then transmitted to the browser program 143 via the web socket connection 150 . The redirected web page received by the browser program 143 includes a JavaScript path that can be used to instruct the browser program 143 to decompress and decode the processed second redirected image. After the browser program 143 decompresses and decodes the processed second redirection image to obtain a display image, the browser program 143 can display the image in the display area of the browser program 143 .
其中一个处理技术(即编码/解码以及压缩/解压)在专利号为7,567,717以及7,970,218的美国专利专利中公开,这些美国专利明确地整合在本文中以供参考。简单来说,如这些专利所公开的,根据第二重定向图像中包围给定像素的若干像素的值以及第一重定向图像中对应像素的值,KVM重定向模块122可以生成用于第二重定向图像的给定像素的预测值。进一步地,根据有损或者无损要求,KVM重定向模块122选择性地将第二重定向图像中给定像素的实际值替换成预测值,并随后对第二重定向图像相应地编码。随后,KVM重定向模块122使用预定算法,例如简化的游程编码(“RLE”)算法来对已编码的第二重定向图像进行压缩,并由此获得已处理的第二重定向图像。此外或可选择地,KVM重定向模块122可以使用惯用的图像压缩技术来对第二重定向图像进行处理。其中,该惯用的图像压缩技术包括无损图像压缩方法和有损图像压缩方法。其中,无损图像压缩方法例如DPCM、熵编码、紧缩(deflation)或链式编码压缩;而有损图像压缩方法例如颜色空间减少、二次抽样或转换编码。One such processing technique (ie, encoding/decoding and compression/decompression) is disclosed in US Patent Nos. 7,567,717 and 7,970,218, which are expressly incorporated herein by reference. Briefly, as disclosed in these patents, based on the values of the pixels surrounding a given pixel in the second redirected image and the values of the corresponding pixels in the first redirected image, the KVM redirection module 122 can generate The predicted value for a given pixel of the redirected image. Further, according to lossy or lossless requirements, the KVM redirection module 122 selectively replaces the actual value of a given pixel in the second redirected image with a predicted value, and then encodes the second redirected image accordingly. Subsequently, the KVM redirection module 122 compresses the encoded second redirected image using a predetermined algorithm, such as a reduced run-length encoding ("RLE") algorithm, and thereby obtains a processed second redirected image. Additionally or alternatively, the KVM redirection module 122 may process the second redirected image using conventional image compression techniques. Wherein, the conventional image compression technology includes lossless image compression method and lossy image compression method. Wherein, the lossless image compression method is such as DPCM, entropy coding, deflation or chain coding compression; and the lossy image compression method is such as color space reduction, sub-sampling or transform coding.
特别地,在图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显示该图像。In particular, operations 710 through 776 shown in FIG. 7B are similar to corresponding operations in FIG. 7A . In operation 779 , the browser program 143 displays the first redirection image in the browser display area 161 of the browser program 143 . In operation 781, the KVM redirection module 122 receives a second video frame of the host 110, and generates a second redirection image. The KVM redirection module 122 then processes the second redirected image using the techniques discussed above to generate a processed (ie, encoded and compressed) image. In operation 783 , the web server 126 of the BMC 120 sends the processed image to the web socket module 124 . In operation 784 , the web socket module 124 sends the processed image to the web socket module 145 over the web socket connection 150 . In operation 787 , the web socket module 145 sends the processed image to the browser program 143 . In operation 78, the browser program 143 may decompress and decode the processed image to obtain an image for display, e.g. Display the image.
图8概略性地示出了根据本发明的另一实施例的基于网络的KVM重定向。在本实施例中,计算设备140包括Java虚拟机(JVM)166。可选择地,JVM可以从BMC120的网络服务器126通过浏览器程序143下载。Fig. 8 schematically shows network-based KVM redirection according to another embodiment of the present invention. In the present embodiment, computing device 140 includes a Java Virtual Machine (JVM) 166 . Alternatively, the JVM can be downloaded from the web server 126 of the BMC 120 through the browser program 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的会话。Initially, the browser program 143 connects with the web server 126 of the BMC 120 to receive a redirected web page. The user can input verification information, and send the verification information to the web server through the redirection webpage. The web server 126 authenticates the user and then sends the session token to the browser program 143 . Web server 126 stores precompiled Java objects 164 that are executable by a JVM on computing device 140 . The browser program 143 downloads the Java object 164 with the permission of the user operating the browser program. Java object 164 is then executed in the JVM of computing device 140 . The Java object launches a Java display module 163 that can be used to display redirected images and patches. The Java display module 163 renders images on the display device 147 . The browser program 143 passes the session token received from the web server 126 to the Java object 164 . Java object 164 may establish connection 151 with redirection server 122 . Typically, connection 151 is established between TCP/IP socket 195 of computing device 140 and TCP/IP socket 125 of BMC 120 . Through JVM 166 , the Java object 164 can instruct the operating system 144 to open a TCP/IP socket 195 for the Java object 164 . Using the session token, the Java object 164 can establish a communication channel for the session with the KVM redirection module 122 .
在建立通信通道后,KVM重定向模块122可以通过通信通道发送重定向图像和补丁至Java对象。Java对象164调用Java显示模块163来显示重定向图像和补丁。根据用户对重定向图像的所需分辨率的配置,Java对象164将Java显示模块163设置成所需的分辨率。Java对象164可以定义函数,例如drawImage(),调用该函数时可以在Java显示模块163上显示完整的重定向图像,并且在指定区域采用贴片图像对Java显示模块163进行修补。类似于画布160,该Java对象164可以采用坐标参数以在Java显示模块163上绘制贴片图像。After the communication channel is established, the KVM redirection module 122 can send the redirection image and patch to the Java object through the communication channel. The Java object 164 calls the Java display module 163 to display redirected images and patches. Based on the user's configuration of the desired resolution of the redirected image, the Java object 164 sets the Java display module 163 to the desired resolution. The Java object 164 can define a function, such as drawImage(), which can display a complete redirected image on the Java display module 163 when this function is called, and patch the Java display module 163 with a patch image in a specified area. Similar to the canvas 160 , the Java object 164 can take coordinate parameters to draw tile images on the Java display module 163 .
可选择地,对于图7B,KVM重定向模块122可以如上所述对重定向图像进行处理。随后,KVM重定向模块122通过通信通道发送已处理的图像至Java对象164。Java对象164可以对已处理的图像进行解压和解码,以获得用于显示的图像。随后,Java对象164可以在Java显示模块163上显示图像。Alternatively, with respect to FIG. 7B, KVM redirection module 122 may process redirected images as described above. Subsequently, the KVM redirection module 122 sends the processed image to the Java object 164 through the communication channel. The Java object 164 can decompress and decode the processed image to obtain an image for display. Subsequently, the Java object 164 can display an image on the Java display module 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。FIG. 9 shows the flow of video redirection using Java objects according to some embodiments of the present invention. In operation 910, the browser program 143 sends a KVM redirect web page request to the BMC 120 through the network. The request may be in HTTP format. Once the request for the KVM redirection webpage is received, in operation 920 , the web server 126 of the BMC 120 sends the KVM redirection webpage to the browser program 143 . Therefore, in operation 922 , the browser program 143 may display the KVM redirection webpage to the user, and allow the user of the computing device 140 to input or select configuration information of the KVM redirection module 122 . The configuration item information of the KVM redirection module may include redirection image resolution information, redirection image refresh rate information, machine and network settings, authentication settings, and other information for KVM redirection. Then, in operation 924 , the browser program 143 sends the configuration information to the web server 126 of the BMC 120 , for example, using the HTTP protocol. The web server 126 correspondingly sends the configuration information to the KVM redirection module 122 . Browser program 143 also requests Java objects from web server 126 . Once the configuration information is received, in operation 926 the web server 126 configures the Java object 164 if necessary and then sends the Java object 164 and the session token to the browser program 143 . Once the Java object 164 is received, the browser program 143 starts the Java object 164 on the JVM 166 and passes the session token to the Java object 164 in operation 928 .
同时,在操作930中,BMC对应地设置KVM重定向模块122。KVM重定向模块122可以与主机110的重定向控制器118建立连接。Meanwhile, in operation 930, the BMC sets the KVM redirection module 122 accordingly. The KVM redirection module 122 can establish a connection with the redirection controller 118 of the host 110 .
在操作960中,Java对象164通过采用会话令牌启动与KVM重定向模块122之间的通信连接。在操作966中,在计算设备140的TCP/IP套接字模块195和在BMC120的TCP/IP套接字模块125之间建立TCP/IP连接。In operation 960, the Java object 164 initiates a communication connection with the KVM redirection module 122 by employing the session token. In operation 966 , a TCP/IP connection is established between the TCP/IP socket module 195 of the computing device 140 and the TCP/IP socket module 125 of the BMC 120 .
一旦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中显示。Once the TCP/IP connection is established, the BMC 120 can start redirecting the video output from the host 110 to the Java object 164 through the TCP/IP connection. Specifically, in operation 970 , the KVM redirection module receives a first video frame, or frame 1 , from the host 110 . The KVM redirection module may process (ie, encode and compress) the first video frame to generate a processed first redirected image. In operation 972 , the KVM redirection module 122 sends the processed first redirection image to the TCP/IP socket module 125 . In operation 974 , the TCP/IP socket module 125 sends the processed first redirected image to the TCP/IP socket module 195 of the computing device 140 over the TCP/IP connection. In operation 976 , the TCP/IP socket module 195 sends the first compressed image to the Java object 164 . In operation 978, the Java object 164 decompresses the compressed image. In operation 979 , the Java object displays the decompressed image in the Java display module 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中显示。Subsequently, in operation 980 , the KVM redirection module 122 receives the second video frame from the host 110 . The KVM redirection module 122 then processes (ie, encodes and compresses) the second video frame and thereby generates a processed second redirected image. In operation 982 , the KVM redirection module sends the processed second redirection image to the TCP/IOP socket module 125 . In operation 984 , the socket module 125 sends the processed second redirected image to the TCP/IP socket module 195 of the computing device 140 over the TCP/IP connection. In operation 986 , the TCP/IP socket module 195 sends the second compressed image to the Java object 164 . In operation 988, the Java object 164 decompresses and decodes the processed second redirected image and generates a second image for display. In operation 989 , the Java object displays the second image in the Java display module 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的输入当作来源于本地输入设备的输入。Referring back to FIG. 4, in some embodiments, input redirection, including keyboard and mouse redirection, is performed concurrently with video redirection. The browser program 143 can receive input signals from input devices such as a keyboard 148, a mouse 149, and a touch screen. Browser program 143 may send input data to web socket 124 of BMC 120 via web socket connection 150 . When the network socket 124 of the BMC 120 receives input data, the network socket 124 passes the input data to the network server 126, and the network server 126 can process the input data to retrieve keyboard and mouse input. The web server 126 sends keyboard and mouse input to the KVM redirection module 122 . If desired, KVM redirection module 122 may convert keyboard and mouse input to the format used by host 110 and send the input to I/O controller 116 . In this way, the host 110 can treat the input from the browser program 143 as input from the local input device.
利用操作系统144,浏览器程序143可以生成输入事件(inputevent),该输入事件代表来自指向浏览器程序143的键盘148和鼠标149的输入。例如,在键盘148上,当键被按压时,键盘动作将会发生。一些键盘动作可能涉及同时被按压的多个键的组合。这样的键盘动作通常与键盘148的特定功能键有关,例如Ctrl键、Atl键或者Shift键,这些功能键期望应当与其他键组合工作。在这样的动作中,这种组合将产生与每个单独的键输入所不同的键输入。每个键盘动作将产生响应的输入数据,该输入数据可能包括字符编码,或者对应于键盘事件的其它代表数值。Using operating system 144 , browser program 143 may generate input events representing input from keyboard 148 and mouse 149 pointing at browser program 143 . For example, on keyboard 148, when a key is pressed, a keyboard action will occur. Some keyboard actions may involve combinations of multiple keys being pressed simultaneously. Such keyboard actions are typically associated with specific function keys of the keyboard 148, such as the Ctrl key, Atl key, or Shift key, which are expected to work in combination with other keys. In such actions, this combination will produce a different key entry than each individual key entry. Each keyboard action will generate corresponding input data, which may include character codes, or other representative values corresponding to keyboard events.
鼠标可执行多种不同的动作,例如将鼠标光标放置在特定区域上、移动鼠标光标、滚动鼠标滚轮,以及点击(单击或双击)鼠标按钮。在一些实施例中,上述动作可以组合,例如可以在将鼠标光标放置在特定区域时点击鼠标按钮,或“拖动”鼠标,即点击鼠标按钮并在不释放按钮同时移动鼠标光标。通常地,鼠标事件可以分成几类,例如点击事件、拖动事件以及移动事件。The mouse can perform many different actions, such as placing the mouse cursor over a specific area, moving the mouse cursor, scrolling the mouse wheel, and clicking (single-clicking or double-clicking) a mouse button. In some embodiments, the above actions can be combined, for example, clicking a mouse button while placing the mouse cursor in a specific area, or "dragging" the mouse, ie clicking a mouse button and moving the mouse cursor without releasing the button. Generally, mouse events can be divided into several categories, such as click events, drag events, and move events.
JavaScript提供了对应于这些鼠标和键盘动作的函数以及事件对象。例如,点击动作可能包括按下鼠标事件以及鼠标弹起事件,这分别指的是鼠标按钮被按压的动作,以及被按压的鼠标按钮被释放的动作。移动动作可能包括鼠标移动事件,该鼠标移动事件指的是将鼠标光标从一个位置移动至另一位置。拖动动作指的是鼠标按下事件、鼠标移动事件以及鼠标弹起事件的组合。与鼠标事件有关的其它JavaScript函数和试驾的例子可包括鼠标悬停(mouseover)事件、该事件涉及将鼠标光标移动至屏幕上的预定区域;以及鼠标移入(mouseenter)事件,该事件涉及将鼠标光标移动至屏幕上的预定区域。JavaScript也提供了getMousePos()函数,以与鼠标移动事件组合使用。每个鼠标事件可以包括多个参数。例如,当鼠标按下事件发生时,该事件将生成代表鼠标按下事件的编码,以及生成代表发生该鼠标按下事件所在的鼠标光标位置的坐标参数。JavaScript provides functions and event objects corresponding to these mouse and keyboard actions. For example, a click action may include a mouse down event and a mouse up event, which respectively refer to an action in which a mouse button is pressed and an action in which the pressed mouse button is released. Movement actions may include mouse movement events, which refer to moving the mouse cursor from one location to another. A drag action refers to a combination of a mouse down event, a mouse move event, and a mouse up event. Examples of other JavaScript functions and test drives related to mouse events may include a mouseover event, which involves moving the mouse cursor to a predetermined area on the screen; and a mouseenter event, which involves moving the mouse The cursor moves to a predetermined area on the screen. JavaScript also provides the getMousePos() function for use in combination with mouse movement events. Each mouse event can include multiple parameters. For example, when a mouse down event occurs, the event will generate a code representing the mouse down event and a coordinate parameter representing the position of the mouse cursor where the mouse down event occurs.
在某些实施例中,当在画布160或Java显示模块163上发生事件时,KVM重定向网页捕捉鼠标事件的位置。例如,显示在浏览器程序143的画布160上的重定向图像可以示出主机110输出的用户界面。用户可以使用计算设备140的鼠标来点击显示在画布上的用户界面的鼠标。重定向网页可以具有JavaScript路径,该JavaScript检测鼠标事件的位置以及检测与画布160或Java显示模块163有关的鼠标事件的生成的坐标。在画布160或Java显示模块163与由主机110的视频控制器117输出的视频帧具有一对一关系的分辨率的位置处,这些浏览器坐标也指示主机110上的重定向鼠标事件的期望位置。在其他情况中,网络服务器126可以将从浏览器程序143中获得的浏览器坐标转换成主机110上的视频帧坐标,以正确地显示主机110上的重定向鼠标事件的期望坐标位置。In some embodiments, when an event occurs on the canvas 160 or the Java display module 163, the KVM redirects the web page to capture the location of the mouse event. For example, a redirection image displayed on canvas 160 of browser program 143 may show a user interface output by host 110 . The user may use the mouse of the computing device 140 to click the mouse of the user interface displayed on the canvas. The redirect webpage may have a JavaScript path that detects the location of the mouse event and the coordinates that detect the generation of the mouse event relative to the canvas 160 or Java display module 163 . At locations where the canvas 160 or Java display module 163 has a one-to-one relationship with the resolution of the video frame output by the video controller 117 of the host 110, these browser coordinates also indicate the desired location on the host 110 for redirected mouse events . In other cases, the web server 126 may convert the browser coordinates obtained from the browser program 143 into video frame coordinates on the host 110 to correctly display the desired coordinate position of the redirected mouse event on the host 110 .
例如,返回参照图5,当浏览器程序140的画布160显示重定向图像159时,计算设备140的用户可以使用鼠标点击画布上的位置180。因此,浏览器程序143可以使用JavaScript(包括鼠标按下事件和getMousePos()函数)来获得鼠标点击位置180的坐标参数,并将鼠标点击事件数据发送至BMC120。随后,如果需要,BMC120强该鼠标点击数据转换成主机110使用的格式,并将该事件数据发送至主机110的输入控制器116。For example, referring back to FIG. 5 , while canvas 160 of browser program 140 displays redirection image 159 , a user of computing device 140 may use a mouse to click on location 180 on the canvas. Therefore, the browser program 143 can use JavaScript (including the mouse down event and the getMousePos() function) to obtain the coordinate parameters of the mouse click position 180 , and send the mouse click event data to the BMC 120 . The BMC 120 then converts the mouse click data into a format used by the host 110 and sends the event data to the input controller 116 of the host 110, if necessary.
本申请的以上示例性的实施例的上述描述只是用来说明和描述,并未企图穷尽所有或将申请限制为所公开的具体形式。在上述教导下,还可以有很多修改和变形。The foregoing description of the above exemplary embodiments of the present application has been presented for purposes of illustration and description, and is not intended to be exhaustive or to limit the application to the precise forms disclosed. Many modifications and variations are possible in light of the above teaching.
选择和描述的实施例是用来解释本申请的原理及其实际应用以使本领域技术人员实施本申请和各种实施例以及通过各种修改以适用于各种预期的用途的。在不脱离本申请精神和范围的情况下,替代实施例对于本申请所属技术领域的技术人员来说是显而易见的。例如,可同时使用各种探测仪来实施本发明。因此,本申请的范围是由其权利要求确定的,而不是以上说明书及其中描述的示例性实施例。The embodiments were chosen and described in order to explain the principles of the application and its practical application to enable others skilled in the art to practice the application and various embodiments with various modifications to various intended uses. Alternative embodiments will be apparent to those skilled in the art to which this application pertains without departing from the spirit and scope of the application. For example, various detectors may be used simultaneously to practice the invention. Accordingly, the scope of the application is to be determined by its claims rather than the foregoing specification and the exemplary embodiments described therein.
Claims (25)
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 true CN105051713A (en) | 2015-11-11 |
| CN105051713B CN105051713B (en) | 2017-08-04 |
Family
ID=54477792
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201380074738.6A Active CN105051713B (en) | 2013-03-15 | 2013-03-15 | Method and system for network-based keyboard, video and mouse (KVM) redirection |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN105051713B (en) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107545198A (en) * | 2017-05-18 | 2018-01-05 | 紫光华山信息技术有限公司 | A kind of button management method and device |
| CN109446460A (en) * | 2018-10-24 | 2019-03-08 | 国云科技股份有限公司 | An HTML5 online video redirection system and its implementation method |
| CN109634659A (en) * | 2018-12-18 | 2019-04-16 | 浪潮电子信息产业股份有限公司 | Method, apparatus, equipment and the storage medium that a kind of couple of BMC is controlled |
| CN111190492A (en) * | 2019-12-25 | 2020-05-22 | 曙光信息产业(北京)有限公司 | Method and device for starting KVM |
| CN113126869A (en) * | 2021-03-30 | 2021-07-16 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | Method and system for realizing KVM image high-speed redirection based on domestic BMC chip |
| CN115543140A (en) * | 2022-09-26 | 2022-12-30 | 深圳市国鑫恒运信息安全有限公司 | Control method for displaying BIOS setting interface cursor on SOL page |
Citations (4)
| 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) |
| CN101416173A (en) * | 2006-03-31 | 2009-04-22 | STTWebOS股份有限公司 | Method and apparatus for exchanging information in a web-based environment |
| US8136042B2 (en) * | 2007-05-11 | 2012-03-13 | Raritan Americas, Inc. | Local port browser interface |
| US20130007129A1 (en) * | 2011-07-01 | 2013-01-03 | Stoneware, Inc. | Method and apparatus for application costing based on client hardware |
-
2013
- 2013-03-15 CN CN201380074738.6A patent/CN105051713B/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101416173A (en) * | 2006-03-31 | 2009-04-22 | STTWebOS股份有限公司 | Method and apparatus for exchanging information in a web-based environment |
| 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) |
| US8136042B2 (en) * | 2007-05-11 | 2012-03-13 | Raritan Americas, Inc. | Local port browser interface |
| US20130007129A1 (en) * | 2011-07-01 | 2013-01-03 | Stoneware, Inc. | Method and apparatus for application costing based on client hardware |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107545198A (en) * | 2017-05-18 | 2018-01-05 | 紫光华山信息技术有限公司 | A kind of button management method and device |
| CN107545198B (en) * | 2017-05-18 | 2020-02-11 | 新华三信息技术有限公司 | Key management method and device |
| CN109446460A (en) * | 2018-10-24 | 2019-03-08 | 国云科技股份有限公司 | An HTML5 online video redirection system and its implementation method |
| CN109634659A (en) * | 2018-12-18 | 2019-04-16 | 浪潮电子信息产业股份有限公司 | Method, apparatus, equipment and the storage medium that a kind of couple of BMC is controlled |
| CN111190492A (en) * | 2019-12-25 | 2020-05-22 | 曙光信息产业(北京)有限公司 | Method and device for starting KVM |
| CN113126869A (en) * | 2021-03-30 | 2021-07-16 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | Method and system for realizing KVM image high-speed redirection based on domestic BMC chip |
| CN115543140A (en) * | 2022-09-26 | 2022-12-30 | 深圳市国鑫恒运信息安全有限公司 | Control method for displaying BIOS setting interface cursor on SOL page |
| CN115543140B (en) * | 2022-09-26 | 2024-05-14 | 深圳市国鑫恒运信息安全有限公司 | Control method for displaying BIOS setting interface cursor on SOL page |
Also Published As
| Publication number | Publication date |
|---|---|
| CN105051713B (en) | 2017-08-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8887060B2 (en) | System and method of web-based keyboard, video and mouse (KVM) redirection and application of the same | |
| CN105051713B (en) | Method and system for network-based keyboard, video and mouse (KVM) redirection | |
| JP6203370B2 (en) | System and method for web-based virtual media redirection | |
| US8648858B1 (en) | Hybrid text and image based encoding | |
| US20140333508A1 (en) | System and method for communicating and interacting with a display screen using a remote device | |
| US8713456B2 (en) | Establishing a graphical user interface (‘GUI’) theme | |
| KR20160069442A (en) | Service error detection apparatus for cloud streaming service, end to end service monitoring system and method thereof | |
| CN107924318A (en) | Desktop and application remote processing solution based on web browser | |
| TWI495330B (en) | System and method for efficiently streaming digital video | |
| US8854413B2 (en) | Communicating with an endpoint using matrix barcodes | |
| US20190200030A1 (en) | Split framebuffer encoding | |
| CN105051714B (en) | System and method for network-based virtual media redirection | |
| JP6445050B2 (en) | Cloud streaming service providing method, apparatus and system therefor, and computer-readable recording medium on which cloud streaming script code is recorded | |
| US8736622B2 (en) | System and method of leveraging GPU resources to enhance performance of an interact-able content browsing service | |
| US11593122B2 (en) | Dynamic resizing of a portion of a virtual device user interface | |
| US11089381B2 (en) | Apparatus and method for simultaneous playback and backup of media in a web browser | |
| CN105677308A (en) | Integrated system and method of application interfaces | |
| Anand et al. | Using pruss for real-time applications on beaglebone black | |
| CN116346890B (en) | Data processing method, device, electronic device and readable medium for cloud service | |
| US10778834B2 (en) | Controlling different states of operation of an electronic device over a communication network using a control device | |
| CN113821745B (en) | Image processing method, cloud service method, device, electronic device and storage medium | |
| JP5740026B1 (en) | Server and method for displaying display screen | |
| JP5980428B2 (en) | COMMUNICATION DEVICE, RESPONSE DATA GENERATION METHOD, AND PROGRAM | |
| JP2015185177A (en) | Server for displaying display screen, and method |
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 |