实现x11客户端和x11服务器连接的方法及系统的制作方法

文档序号:7700780阅读:548来源:国知局
专利名称:实现x11客户端和x11服务器连接的方法及系统的制作方法
技术领域
本发明涉及到Xll (X Window System Protocol Version 11, X视窗系 统版本ll)协议,尤其涉及实现Xll客户端和Xll服务器连接的方法及系统。
背景技术
X Window System (X视窗系统)是一套视窗系统,最初由MIT (麻省理 工学院)为Unix类操作系统开发,现在已广泛应用在Linux、 Unix、 BSD等 操作系统中,X视窗系统和微软公司的视窗操作系统有很大区别,微软公司 的视窗系统由操作系统内建,而X视窗系统不由操作系统内建,它只是一个 普通的软件系统,各种类Unix操作系统可以利用它实现图形界面的操作,比 如鼠标操作;Linux或者Unix没有它也可以运行,只是无法支持有图形界面 输出的程序。X视窗系统自从发布以来获得了很大的发展,在Xll的核心协 议之外又增加了很多扩展协议,这些扩展协议和核心协议一起方便了人们对 Xll的开发应用。
X视窗系统是基于C/S(Client/Server,客户端/服务器)模式,各种Xll 应用程序都是X客户端,X服务器现在通用的有X. org和XFree86发布的服 务器,关于X视窗系统的内容如〃TheX Window System〃, Software: Practice and Experience, 1990中所述。
Xll服务器之间的窗口共享是基于X视窗系统C/S模式的一个应用,该 应用主要内容是实现同一个窗口在不同的Xll服务器之间共享;此处共享指 某个窗口被多个X11服务器显示。当前提出的共享方式有很多种,但从本质 上来说有两种, 一种是通过窗口复制的方法将一个Xll服务器上的窗口复制 到另一个Xll服务器上;另一种是通过窗口迁移的方法将一个Xll服务器上 的窗口迁移到另一个Xll服务器上,关于窗口共享方式的内容如 "Collaborative sharing of windows between Mac OS X, the X WindowSystem and Windows" , In Proceedings of Norsk Informatikkonferanse, NIK 2004. Stavanger, Norway, November 2004,中所述。
现在己经有一些协议和软件通过在Xll服务器和Xll客户端之间插入一 个服务器来实现不同的Xll服务器之间窗口或桌面共享,如VNC和XMove, 关干VNC和.XMove如"Virtual . Network Computing", IEEE INTERNET COMPUTING, 1998和"XMOVE: A PSEUD0SERVER FOR X WINDOW MOVEMENT", The X Resource, Issue 11, pp. 143-170, July 1994所述。VNC是一个应用比 较广泛的桌面共享协议,XMove软件可以实现Xll服务器之间的窗口迁移, VNC协议实现的是整个桌面的共享,而XMove实现的是单个窗口在Xll服务 器之间的迁移。VNC和XMove实现的功能虽然不同,但它们实现的方法在本 质上相同,都是通过将本地Xll服务器上的帧缓冲(framebuffer)以压缩图 片的形式传送到其他Xll服务器来实现共享。以帧缓冲压縮图片为技术基础 的实现会存在该技术自身无法克服的缺陷,首先是对网络带宽的压力,如果 应用程序窗口变化比较快,就会导致程序性能迅速下降,响应变慢;其次是 对共享窗口的X11服务器数目有限制,多个Xll服务器就需要同时发送多个 帧缓冲图片,此时网络带宽将会成为瓶颈。
现有技术中, 一旦Xll服务器和Xll客户端断开连接,Xll客户端就会 退出运行。这将对需要长时间运行的X11应用程序不利,因为这些Xll应用 程序生成的窗口不能关闭,必须一直开着, 一旦关闭,相当于断开Xll服务 器和X11客户端的连接,就会导致应用程序退出运行。VNC和Xmove都没有 断开Xll应用程序和Xll服务器的连接,只是将Xll服务器端的framebuffer 以图片的形式发送到另一个Xll服务器上进行显示,而实际的Xll客户端仍 然和最初建立连接的Xll服务器连接。

发明内容
为解决上述问题,本发明提供了一种实现Xll客户端和Xll服务器连接 的方法及系统,能够在Xll客户端和Xll服务器间实现松耦合连接,使得Xll 客户端不受Xll服务器运行状态的影响。
本发明公开了实现Xll客户端和Xll服务器连接的方法,所述方法包括歩骤l,启动伪服务器,所述伪服务器侦听Xll客户端发送的连接请求 和Xll服务器端发送的要求连接请求;
步骤2,当所述伪服务器侦听到Xll客户端的连接请求时,所述伪服务 器作为一个Xll服务器同所述Xll客户端建立连接;
步骤3,当所述伪服务器侦听到:Xl.l服务器的要求连接请求时,所述伪 服务器作为一个Xll客户端同所述Xll服务器建立连接;
步骤4,所述伪服务器在连接的Xll客户端和Xll服务器间转发数据包。
所述步骤2还包括,
步骤21,所述伪服务器接收所述X11客户端发送的资源生成指令,根据
所述资源生成指令在所述伪服务器建立用于记录资源的属性的资源列表;并
向所述伪服务器连接的Xll服务器中要求同所述Xll客户端连接的Xll服务
器发送资源生成指令,使所述Xll服务器生成所述资源列表的副本;
所述步骤3还包括,
步骤22,在所述Xll服务器要求连接的X11客户端已启动并已同所述伪 服务器连接时,所述伪服务器向所述X11服务器发送资源生成指令,使所述 Xll服务器生成所述Xll客户端在所述伪服务器中的资源列表的副本。
所述步骤4进一步为,
步骤31,所述伪服务器接收连接的X11客户端发送的资源属性设置指令, 解析所述资源属性设置指令;
步骤32,提取维护资源列表所需的资源属性设置指令,根据所述资源属 性设置指令修改所述Xll客户端在所述伪服务器中的资源列表,将所述资源 属性设置指令发送给要求同所述Xll客户端连接的Xll服务器,使伪服务器 端的资源属性和Xll服务器端的资源属性保持一致。
所述步骤21还包括
步骤41,所述伪服务器在建立所述资源列表时,为所述资源列表中的资 源分配ID,并将分配的ID返回给所述Xll客户端;
所述步骤21和步骤22中在所述伪服务器发送完所述资源生成指令后, 还包括
步骤42,所述X11服务器在生成所述资源列表的副本时,为所述副本中 资源分配ID,并将所述ID返回给所述伪服务器;步骤43,所述伪服务器接收所述Xll服务器返回的所述ID。 所述步骤4进一步为,
歩骤51,所述伪服务器接收连接的X11客户端发送的绘图指令,如果所 述伪服务器已同要求连接所述X11客户端的X11服务器连接,则执行歩骤52,
否则,丢弃所述绘图指令;
步骤52,解析所述绘图指令,修改所述绘图指令中地址信息为所述Xll 服务器对应地址,修改所述绘图指令中资源的ID为所述Xll服务器为所述资 源分配的ID,将所述绘图指令发送给所述XI1服务器。
所述步骤4进一步为,
步骤61,所述伪服务器接收连接的X11服务器发送的应答指令,解析所 述应答指令,修改所述应答指令中地址信息为所述Xll服务器要求连接的Xll 客户端对应地址,修改所述应答指令中资源的ID为所述伪服务器为所述Xll 客户端的资源分配的ID,将所述应答指令发送给所述Xll客户端。
所述歩骤3还包括,
步骤71,在所述Xll服务器要求连接的Xll客户端已经同所述伪服务器 连接时,所述伪服务器向所述Xll客户端发送expose事件,以使所述Xll 客户端发送绘图指令;
步骤72,所述伪服务器接收到所述X11客户端发送的绘图指令后,将所 述绘图指令转发给所述XI1服务器。
所述步骤2还包括,
步骤81,所述伪服务器同所述X11客户端建立完连接后,为所述客户端 分配客户端标识;
所述步骤3还包括,
步骤82,所述伪服务器同所述X11服务器建立完连接后,将同所述伪服 务器连接的Xll客户端的客户端标识发送给所述Xll服务器,以使所述Xll 服务器从同所述伪服务器连接的Xll客户端中选择要求连接的Xll客户端。
本发明还公开了实现Xll客户端和Xll服务器连接的系统,所述系统为 伪服务器,所述伪服务器包括
侦听模块,用于侦听Xll客户端发送的连接请求和Xll服务器端发送的 要求连接请求;建立客户端连接模块,用于当所述侦听模块侦听到Xll客户端的连接请 求时,使所述伪服务器作为一个Xll服务器同所述Xll客户端建立连接;
建立服务器连接模块,用于当所述侦听模块侦听到Xll服务器的要求连 接请求时,使所述伪服务器作为一个Xll客户端同所述Xll服务器建立连接;
转发模块,用于在连接的Xll客户端和Xll服务器间转发数据包。
所述建立客户端连接模块还用于接收所述Xll客户端发送的资源生成指 令,根据所述资源生成指令在所述伪服务器建立用于记录资源的属性的资源 列表;并向所述伪服务器连接的Xll服务器中要求同所述Xll客户端连接的 Xll服务器发送资源生成指令,使所述Xll服务器生成所述资源列表的副本;
所述建立服务器连接模块还用于在连接的所述Xll服务器要求连接的 Xll客户端已启动并已同所述伪服务器连接时,向所述Xll服务器发送资源 生成指令,使所述Xll服务器生成所述Xll客户端在所述伪服务器中的资源 列表的副本。
所述转发模块进一步用于接收连接的Xll客户端发送的资源属性设置指 令,解析所述资源属性设置指令;提取维护资源列表所需的资源属性设置指 令,根据所述资源属性设置指令修改所述Xll客户端在所述伪服务器中的资 源列表,将所述资源属性设置指令发送给要求同所述Xll客户端连接的Xll 服务器,使伪服务器端的资源属性和Xll服务器端的资源属性保持一致。
所述Xll服务器在生成所述资源列表的副本时,为所述副本中资源分配 ID,并将所述ID返回给所述伪服务器;
所述建立服务器连接模块还用于接收所述Xll服务器返回的所述ID:
所述建立客户端连接模块还用于在建立所述资源列表时,为所述资源列 表中的资源分配ID,并将分配的ID返回给所述Xll客户端。
所述转发模块进一步用于接收连接的Xll客户端发送的绘图指令,如果 所述伪服务器已同要求连接所述Xll客户端的Xll服务器连接,则解析所述 绘图指令,修改所述绘图指令中地址信息为所述Xll服务器对应地址,修改 所述绘图指令中资源的ID为所述Xll服务器为所述资源分配的ID,将所述 绘图指令发送给所述X11服务器,否则,丢弃所述绘图指令。
所述转发模块进一步用于接收连接的Xll服务器发送的应答指令,解析 所述应答指令,修改所述应答指令中地址信息为所述Xll服务器要求连接的Xll客户端对应地址,修改所述应答指令中资源的ID为所述伪服务器为所述 Xll客户端的资源分配的ID,将所述应答指令发送给所述Xll客户端。
所述建立服务器连接模块还用于在所述Xll服务器要求连接的Xll客户 端已经同所述伪服务器连接时,向所述Xll客户端发送expose事件,以使所 述Xll客户端发送绘图指令;接收到所述Xll客户端发送的绘图指令后,■将 所述绘图指令转发给所述Xll服务器。
所述建立客户端连接模块还用于同所述Xll客户端建立完连接后,为所 述客户端分配客户端标识;
所述建立服务器连接模块还用于同所述Xll服务器建立完连接后,将同 所述伪服务器连接的Xll客户端的客户端标识发送给所述Xll服务器,以使 所述Xll服务器从同所述伪服务器连接的Xll客户端中选择要求连接的Xll 客户端。
本发明的有益效果在于,Xll客户端和Xll服务器同伪服务器建立连接, 并且由伪服务器转发Xll客户端和Xll服务器间请求和应答,使得Xll客户 端和Xll服务器间实现松耦合连接,Xll客户端不受Xll服务器运行状态的 影响;伪服务器实现Xll服务器和Xll客户端功能,使得不需改变现有Xll 服务器和X11客户端便可实现本发明,实现方便;通过用传递绘图指令替代 传递帧缓冲压縮图片,减小网络带宽要求,降低网络传输压力。


图1是本发明的Xll服务器和Xll客户端所在系统的结构图2是本发明的实现Xll服务器和Xll客户端连接的方法流程图3是本发明的实现Xll服务器和Xll客户端连接的方法中伪服务器建
立连接的具体实施方式
流程图4是本发明的实现Xll服务器和Xll客户端连接的方法中伪服务器转
具体实施方式
流程图5是本发明伪服务器的结构图。
具体实施例方式
下面结合附图,对本发明做进一步的详细描述。本发明的Xll服务器和Xll客户端所在系统的结构如图1所述,该系统
包括多个Xll服务器和多个Xll客户端,该Xll服务器和该Xll客户端通过
网络同伪服务器连接。
苯发明的方法如图2所示。 ..步骤S20L启动伪服务器,该伪服务器侦听Xll客户端的连接请求和X1L 服务器端的要求连接请求。
步骤S202,当该伪服务器侦听到X11客户端的连接请求时,该伪服务器 作为一个Xll服务器同发送该连接请求的Xll客户端建立连接。
步骤S203,当该伪服务器侦听到X11服务器的要求连接请求时,该伪服 务器作为一个Xll客户端同发送该要求连接请求的Xll服务器建立连接。
步骤S204,该伪服务器在连接的Xll客户端和Xll服务器间转发数据包。
在该系统中具体应用情景如下所述
步骤201,启动伪服务器。
步骤202,运行X11客户端,伪服务器同Xll客户端建立连接。
歩骤203,根据要求将伪服务器同指定的Xll服务器建立连接,在该Xll 服务器上输出窗口。
步骤204,在査看完中间结果或者不需要一直输出窗口时,断开X11服 务器和伪服务器的连接。
步骤205,重新连接断开后的Xll服务器和伪服务器。
步骤206,多个Xll服务器同时和伪服务器连接,输出同一个X11客户 端的窗口到该多个Xll服务器。
由于伪服务器在连接中分别实现Xll服务器和Xll客户端的功能,所以 本发明无需改变系统中Xll服务器和Xll客户端,便于实现。
在该系统中具体应用的另一个情景为,在启动伪服务器时,将该伪服务 器连接到一个具体指定的Xll服务器上,然后运行Xll客户端并使其与伪服 务器连接;Xll客户端和Xll服务器通过伪服务器建立连接后,可以在Xll 客户端运行的任何时候断开伪服务器和Xll服务器的连接。
本发明实现Xll服务器和Xll客户端连接的松耦合程度是Xll服务器的
运行状态对当前正在运行的ni客户端没有任何直接影响,从而关闭xii服
务器端的窗口或者X11服务器自身,对伪服务器来说相当于断开和Xll服务器的连接,不会影响X11客户端的运行;只有当X11服务器明确向伪服务器 发出关闭X11客户端的命令时,Xll客户端才会退出运行。
本发明的实现Xll服务器和Xll客户端连接的方法具体实施方式
流程如 图3所示。
—.步骤S30],.启动伪服务器,打开两个socket (侦听套接字),分别侦听 Xll客户端的连接请求和Xll服务器端的要求连接请求;当侦听到Xll客户 端的连接请求时,执行步骤S302,当侦听到Xll服务器的要求连接请求时, 执行歩骤S303。
步骤S302,该伪服务器作为一个Xll服务器同该Xll客户端建立连接; 为该Xll客户端分配客户端ID,执行步骤S304。
步骤S303,该伪服务器作为一个X11客户端同所述X11服务器建立连接, 将同该伪服务器连接的Xll客户端的客户端ID发送给该Xll服务器,以使该 Xll服务器从该伪服务器连接的Xll客户端中选择要求连接的Xll客户端, 执行步骤S306。
步骤S304,接收该Xll客户端发送的资源生成指令,根据该资源生成指 令在本地建立资源列表,记录资源的属性;该伪服务器在建立资源列表时, 为该Xll客户端的资源分配ID,并将分配的ID返回给该Xll客户端。
资源列表中记录的资源包括GC (绘图上下文),Font (字体),Window Attributes (窗口属性),Bitmap (比特图),Pixmap (像素图),Tile (瓦 片图)和Stipple (点画图)。
步骤S305,该伪服务器连接的Xll服务器中是否有要求连接该Xll客户 端的X11服务器,如果有,执行步骤S306,否则,当接收到该Xll客户端发 送的绘图指令时,执行步骤S309,当接收到该X11客户端发送的资源属性设 置指令时,执行步骤S310。
步骤S306,该伪服务器向Xll服务器发送资源生成指令,使该Xll服务 器生成其要求连接的Xll客户端在该伪服务器中的资源列表的副本。
该X11服务器在生成资源列表的副本时,为该副本中资源分配ID,并将 该ID返回给该伪服务器;该伪服务器接收该ID。
步骤S307,该伪服务器向Xll客户端发送Expose事件,使Xll客户端 产生并发送重新绘制所有窗口指令。步骤S308,该伪服务器将该绘图指令转发给该Xll服务器。 步骤S309,该伪服务器将接收的绘图指令丢弃。
歩骤S310,该伪服务器解析资源属性设置指令,并根据解析资源属性设 置指令修改该Xll客户端在本地的资源列表和属性。 '
本发明中"伪服务器对于Xll服务器来说是一个Xll客户端,对于Xll 客户端来说是一个Xll服务器。
伪服务器和X11客户端连接时,伪服务器作为一个Xll服务器,实现操 作包括分析Xll客户端发送的请求数据包和向Xll客户端发送应答、事件、 错误数据包。
伪服务器和X11服务器连接时,伪服务器作为一个客户端,实现操作包 括向X11服务器发送请求数据包和接收X11服务器的应答、事件、错误数 据包。
此外,由于Xll中规定Colormap (颜色表),Graphical Context (绘图 上下文),Font (字体),Window Attributes (窗口属性)和绘图有关的资源 被保留在X11服务器端,因此,当断开伪服务器和X11服务器的连接后,该 些保存在Xll服务器端的资源将被该Xll服务器回收,如果要在伪服务器和 该Xll服务器再次连接时利用它们,需要在该Xll服务器端重新生成该些资 源。
因此,本发明中伪服务器建立Xll客户端对应的资源列表,将资源保存 起来,当伪服务器和X11服务器连接时,伪服务器通过向该Xll服务器发送 生成资源的指令,使X11服务器生成一份资源列表的副本,从而保证Xll客 户端对资源的属性设定将与Xll服务器中的一致。
在上述方法中Xll客户端和Xll服务器都是已经存在的各种系统,实现 本发明方法不需对现存的各种Xll应用程序和现存的Xll服务器作任何改变,
因而可以使基于本发明提出的方法实现的系统被尽可能多使用。本发明提出
的方法只需要实现图1中的伪服务器系统,在系统中分别为Xll客户端和Xll 服务器提供Xll标准规定的接口,以使任何依据Xll标准实现的应用程序和 Xll服务器都可以利用该伪服务器提供的功能。
本发明的实现Xll服务器和Xll客户端连接的方法中伪服务器转发具体 实施方式流程如图4所示。步骤S411,伪服务器接收X11客户端发送的指令,解析该指令。 如果为资源属性设置指令,解析资源属性设置指令。
如果为绘图指令,如果伪服务器已同要求连接所述Xll的客户端的Xll 服务器连接,则解析该绘图指令,否则,丢弃该绘图指令。
步骤S412,伪服务器处理接收的指令.
如果指令为资源属性设置指令,提取维护资源列表所需的资源属性设置
指令,根据该资源属性设置指令修改该Xll客户端在该伪服务器中的资源列表。
如果指令为绘图指令,则改变指令中的地址信息(DISPLAY)为Xll服务 器的对应地址,并改变窗口的ID、 GC的ID、各种位图的ID为Xll服务器为 该Xll客户端的资源分配的ID。
步骤S413,将指令重新打包,发送给要求连接该Xll客户端的Xll服务器。
步骤S421,伪服务器接收X11服务器发送的应答指令,解析该指令。 解析X11服务器发送来的各种事件,比如窗口最大化。 步骤S422,伪服务器修改应答指令中标识目的Xll客户端的参数。 根据解析结果,对应答指令改变指令中的地址信息(DISPLAY)为Xll客户
端对应的地址;改变窗口的ID、 GC的ID、各种位图的ID为该伪服务器为该
X11客户端的资源分配的ID。
步骤S423,将应答指令重新打包,发送给该Xll服务器要求连接的Xll
客户端。
本发明方法的一个具体实施例如下所述。
伪服务器打开两个socket,分别侦听Xll客户端发送的连接请求和Xll 服务器发送的要求连接的请求。
对于Xll服务器的要求连接请求,伪服务器向该Xll服务器发送连接请 求以建立连接;同该X11服务器建立连接后,伪服务器把已连接在伪服务器 上的所有Xll客户端的客户端ID发送给Xll服务器,使Xll服务器从中选择 要求连接的Xll客户端;如果此时该Xll服务器要求连接的Xll客户端还没 有启动,则该X11服务器不会进行绘制,直到指定的Xll客户端启动为止; 如果该Xll服务器要求连接的Xll客户端己启动,则伪服务器把被选择的Xll
16客户端在伪服务器里保存的对应的资源通过发送请求的方式要求Xll服务器
生成一份副本;伪服务器向Xll客户端发送一个Expose事件,使Xll客户端 重新发送绘图指令;伪服务器将该些绘图指令经过修改后转发给该Xll服务 器,从而使Xll服务器按照伪服务器发来的绘图指令绘制图形。
对于X11客户端的连接请求,伪服务器接受连接后,为该X11客户端分 配一个本地ID;按照该Xll客户端对资源的设置要求在本地生成一份资源列 表,如果要求和该Xll客户端连接的Xll服务器已经和伪服务器建立了连接, 则将该资源列表中的资源在Xll服务器上也生成一份;伪服务器将Xll客户
端的绘图指令转发给Xll服务器;如果没有Xll服务器要求和该Xll客户端
连接,则伪服务器将该Xll客户端发送来的绘图指令丢弃。
伪服务器同Xll客户端和Xll服务器建立完连接后,在Xll客户端间X] 1 服务器转换数据包。
本发明的实现Xll客户端和Xll服务器连接的系统结构如图5所示。所 述系统为伪服务器,所述伪服务器包括侦听模块501、建立客户端连接模 块502、建立服务器连接模块503、转发模块504。
侦听模块501,用于侦听Xll客户端发送的连接请求和Xll服务器端发 送的要求连接请求。
建立客户端连接模块502,用于当侦听模块501侦听到Xll客户端的连 接请求时,使所述伪服务器作为一个Xll服务器同所述Xll客户端建立连接。
建立客户端连接模块502还用于接收所述Xll客户端发送的资源生成指 令,根据所述资源生成指令在所述伪服务器建立用于记录资源的属性的资源 列表;并向所述伪服务器连接的Xll服务器中要求同所述Xll客户端连接的 Xll服务器发送资源生成指令,使所述Xll服务器生成所述资源列表的副本。
建立客户端连接模块502还用于在建立所述资源列表时,为所述资源列 表中的资源分配ID,并将分配的ID返回给所述Xll客户端。
建立客户端连接模块502还用于同所述Xll客户端建立完连接后,为所 述客户端分配客户端标识。
建立服务器连接模块503,用于当所述侦听模块501侦听到Xll服务器 的要求连接请求时,使所述伪服务器作为一个Xll客户端同所述Xll服务器 建立连接。建立服务器连接模块503还用于在连接的所述Xll服务器要求连接的
Xll客户端已启动并己同所述伪服务器连接时,向所述Xll服务器发送资源 生成指令,使所述Xll服务器生成所述Xll客户端在所述伪服务器中的资源 列表的副本。
所述Xll服务器在生成所述资源列表的副本时,为所述副本中资源分配 ID,并将所述ID返回给所述伪服务器。
建立服务器连接模块503还用于接收所述Xll服务器返回的所述ID。
建立服务器连接模块503还用于在所述Xll服务器要求连接的Xll客户 端已经同所述伪服务器连接时,向所述Xll客户端发送expose事件,以使所 述X11客户端发送绘图指令;接收到所述X11客户端发送的绘图指令后,将 所述绘图指令转发给所述Xll服务器。
建立服务器连接模块503还用于同所述Xll服务器建立完连接后,将同 所述伪服务器连接的Xll客户端的客户端标识发送给所述Xll服务器,以使 所述Xll服务器从同所述伪服务器连接的Xll客户端中选择要求连接的Xll 客户端。
转发模块504,用于在连接的Xll客户端和Xll服务器间转发数据包。
转发模块504进一步用于接收连接的Xll客户端发送的资源属性设置指 令,解析所述资源属性设置指令;提取维护资源列表所需的资源属性设置指 令,根据所述资源属性设置指令修改所述Xll客户端在所述伪服务器中的资 源列表,将所述资源属性设置指令发送给要求同所述Xll客户端连接的Xll 服务器,使伪服务器端的资源属性和Xll服务器端的资源属性保持一致。
转发模块504进一步用于接收连接的Xll客户端发送的绘图指令,如果 所述伪服务器已同要求连接所述Xll客户端的Xll服务器连接,则解析所述 绘图指令,修改所述绘图指令中地址信息为所述X11服务器对应地址,修改 所述绘图指令中资源的ID为所述Xll服务器为所述资源分配的ID,将所述 绘图指令发送给所述X11服务器,否则,丢弃所述绘图指令。
转发模块504进一步用于接收连接的Xll服务器发送的应答指令,解析 所述应答指令,修改所述应答指令中地址信息为所述Xll服务器要求连接的 Xll客户端对应地址,修改所述应答指令中资源的ID为所述伪服务器为所述 Xll客户端的资源分配的ID,将所述应答指令发送给所述Xll客户端。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种实现X11客户端和X11服务器连接的方法,其特征在于,所述方法包括步骤1,启动伪服务器,所述伪服务器侦听X11客户端发送的连接请求和X11服务器端发送的要求连接请求;步骤2,当所述伪服务器侦听到X11客户端的连接请求时,所述伪服务器作为一个X11服务器同所述X11客户端建立连接;步骤3,当所述伪服务器侦听到X11服务器的要求连接请求时,所述伪服务器作为一个X11客户端同所述X11服务器建立连接;步骤4,所述伪服务器在连接的X11客户端和X11服务器间转发数据包。
2. 如权利要求1所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤2还包括,步骤21,所述伪服务器接收所述X11客户端发送的资源生成指令,根据所述资源生成指令在所述伪服务器建立用于记录资源的属性的资源列表,;并向所述伪服务器连接的Xll服务器中要求同所述Xll客户端连接的Xll服务器发送资源生成指令,使所述Xll服务器生成所述资源列表的副本;所述步骤3还包括,步骤22,在所述XI1服务器要求连接的XI1客户端己启动并己同所述伪服务器连接时,所述伪服务器向所述X11服务器发送资源生成指令,使所述Xll服务器生成所述Xll客户端在所述伪服务器中的资源列表的副本。
3. 如权利要求2所述的实现XI1客户端和XI1服务器连接的方法,其特征在于,所述步骤4进一步为,步骤31 ,所述伪服务器接收连接的XI1客户端发送的资源属性设置指令,解析所述资源属性设置指令;步骤32,提取维护资源列表所需的资源属性设置指令,根据所述资源属性设置指令修改所述Xll客户端在所述伪服务器中的资源列表,将所述资源属性设置指令发送给要求同所述Xll客户端连接的Xll服务器,使伪服务器端的资源属性和Xll服务器端的资源属性保持一致。
4. 如权利要求2所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤21还包括歩骤41,所述伪服务器在建立所述资源列表时,为所述资源列表中的资源分配ID,并将分配的ID返回给所述X11客户端;所述歩骤21和步骤22中在所述伪服务器发送完所述资源生成指令后,还包括步骤42,所述X11服务器在生成所述资源列表的副本时,为所述副本中资源分配ID,并将所述ID返回给所述伪服务器;步骤43,所述伪服务器接收所述Xll服务器返回的所述工D。
5. 如权利要求4所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤4进一步为,歩骤51,所述伪服务器接收连接的Xll客户端发送的绘图指令,如果所述伪服务器己同要求连接所述Xll客户端的Xll服务器连接,则执行步骤52,否则,丢弃所述绘图指令;步骤52,解析所述绘图指令,修改所述绘图指令中地址信息为所述Xll服务器对应地址,修改所述绘图指令中资源的工D为所述Xll服务器为所述资源分配的ID,将所述绘图指令发送给所述XI1服务器。
6. 如权利要求4所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤4进一步为,步骤61,所述伪服务器接收连接的X11服务器发送的应答指令,解析所述应答指令,修改所述应答指令中地址信息为所述Xll服务器要求连接的Xll客户端对应地址,修改所述应答指令中资源的ID为所述伪服务器为所述Xll客户端的资源分配的ID,将所述应答指令发送给所述Xll客户端。
7. 如权利要求1所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤3还包括,步骤71,在所述Xll服务器要求连接的Xll客户端己经同所述伪服务器连接时,所述伪服务器向所述Xll客户端发送expose事件,以使所述Xll客户端发送绘图指令;步骤72,所述伪服务器接收到所述X11客户端发送的绘图指令后,将所述绘图指令转发给所述Xll服务器。
8. 如权利要求1所述的实现Xll客户端和Xll服务器连接的方法,其特征在于,所述步骤2还包括,步骤81,所述伪服务器同所述X11客户端建立完连接后,为所述客户端分配客户端标识;所述步骤3还包括,步骤82,所述伪服务器同所述X11服务器建立完连接后,将同所述伪服务器连接的Xll客户端的客户端标识发送给所述Xll服务器,以使所述Xll服务器从同所述伪服务器连接的Xll客户端中选择要求连接的Xll客户端。
9. 一种实现X11客户端和X11服务器连接的系统,其特征在于,所述系统为伪服务器,所述伪服务器包括侦听模块,用于侦听Xll客户端发送的连接请求和Xll服务器端发送的要求连接请求;建立客户端连接模块,用于当所述侦听模块侦听到Xll客户端的连接请求时,使所述伪服务器作为一个Xll服务器同所述Xll客户端建立连接;建立服务器连接模块,用于当所述侦听模块侦听到XI1服务器的要求连接请求时,使所述伪服务器作为一个Xll客户端同所述Xll服务器建立连接;转发模块,用于在连接的Xll客户端和Xll服务器间转发数据包。
10. 如权利要求9所述的实现X11客户端和X11服务器连接的系统,其特征在于,所述建立客户端连接模块还用于接收所述Xll客户端发送的资源生成指令,根据所述资源生成指令在所述伪服务器建立用于记录资源的属性的资源列表;并向所述伪服务器连接的Xll服务器中要求同所述Xll客户端连接的Xll服务器发送资源生成指令,使所述Xll服务器生成所述资源列表的副本;所述建立服务器连接模块还用于在连接的所述Xll服务器要求连接的Xll客户端己启动并已同所述伪服务器连接时,向所述Xll服务器发送资源生成指令,使所述Xll服务器生成所述Xll客户端在所述伪服务器中的资源列表的副本。
11. 如权利要求10所述的实现X11客户端和X11服务器连接的系统,其特征在于,所述转发模块进一步用于接收连接的Xll客户端发送的资源属性设置指令,解析所述资源属性设置指令;提取维护资源列表所需的资源属性设置指令,根据所述资源属性设置指令修改所述Xll客户端在所述伪服务器.中的资源列表,将所述资源属性设置指令发送给要求同所述Xll客户端连接的Xll服务器,使伪服务器端的资源属性和Xll服务器端的资源属性保持一致。
12. 如权利要求lO所述的实现Xll客户端和Xll服务器连接的系统,其特征在于,所述Xll服务器在生成所述资源列表的副本时,为所述副本中资源分配ID,并将所述ID返回给所述伪服务器;所述建立服务器连接模块还用于接收所述Xll服务器返回的所述ID;所述建立客户端连接模块还用于在建立所述资源列表时,为所述资源列表中的资源分配ID,并将分配的ID返回给所述Xll客户端。
13. 如权利要求12所述的实现Xll客户端和Xll服务器连接的系统,其特征在于,所述转发模块进一步用于接收连接的Xll客户端发送的绘图指令,如果所述伪服务器己同要求连接所述Xll客户端的Xll服务器连接,则解析所述绘图指令,修改所述绘图指令中地址信息为所述Xll服务器对应地址,修改所述绘图指令中资源的ID为所述Xll服务器为所述资源分配的ID,将所述绘图指令发送给所述X11服务器,否则,丢弃所述绘图指令。
14. 如权利要求12所述的实现X11客户端和X11服务器连接的系统,其特征在于,所述转发模块进一步用于接收连接的Xll服务器发送的应答指令,解析所述应答指令,修改所述应答指令中地址信息为所述Xll服务器要求连接的Xll客户端对应地址,修改所述应答指令中资源的ID为所述伪服务器为所述Xll客户端的资源分配的ID,将所述应答指令发送给所述Xll客户端。
15. 如权利要求9所述的实现X11客户端和X11服务器连接的系统,其特征在于,所述建立服务器连接模块还用于在所述Xll服务器要求连接的Xll客户端已经同所述伪服务器连接时,向所述Xll客户端发送expose事件,以使所述Xll客户端发送绘图指令;接收到所述Xll客户端发送的绘图指令后,将所述绘图指令转发给所述Xll服务器。
16.如权利要求9所述的实现X11客户端和X11服务器连接的系统,其特征在于,所述建立客户端连接模块还用于同所述Xll客户端建立完连接后,为所述客户端分配客户端标识;,所述建立服务器连接模块还用于同所述XI1服务器建立完连接后,-将伺所述伪服务器连接的Xll客户端的客户端标识发送给所述Xll服务器,以使所述Xll服务器从同所述伪服务器连接的Xll客户端中选择要求连接的Xll客户端。
全文摘要
本发明涉及实现X11客户端和X11服务器连接的方法及系统,所述方法包括步骤1,启动伪服务器,所述伪服务器侦听X11客户端发送的连接请求和X11服务器端发送的要求连接请求;步骤2,当所述伪服务器侦听到X11客户端的连接请求时,所述伪服务器作为一个X11服务器同所述X11客户端建立连接;步骤3,当所述伪服务器侦听到X11服务器的要求连接请求时,所述伪服务器作为一个X11客户端同所述X11服务器建立连接;步骤4,所述伪服务器在连接的X11客户端和X11服务器间转发数据包。本发明能够在X11客户端和X11服务器间实现松耦合连接,使得X11客户端不受X11服务器运行状态的影响。
文档编号H04L29/06GK101582890SQ20091008655
公开日2009年11月18日 申请日期2009年6月9日 优先权日2009年6月9日
发明者楠 王, 韩冀中, 高进军 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1