建立全双工双向通信的方法和系统与流程

文档序号:11436672阅读:235来源:国知局
建立全双工双向通信的方法和系统与流程

分案说明

本申请属于申请日为2011年11月02日的中国发明专利申请201180053899.8的分案申请。



背景技术:

超文本传输协议(http)是无状态的远程过程调用(rpc)类型协议,其要求客户端和服务器之间的通信并且遵循严格的请求-响应模式。http将数据从客户端流送到服务器或从服务器流送到客户端。当前,从客户端到服务器和从服务器到客户端的双向流送要求两个传输控制协议(tcp)连接,以分别在客户端和服务器之间流送数据。第一tcp连接由客户端用来将请求流送到服务器,而第二tcp连接由服务器用来将响应流送到客户端。

例如,对于客户端到服务器通信,方法包括hangingget、长轮询、以及轮询。hangingget方法包括未决(pending)rpc协议,其允许服务器在任何时间将响应数据流送到客户端。来自客户端的请求不包括初始握手请求,并且该请求不包含数据。长轮询方法类似于hangingget方法,但是来自服务器的响应对于服务器发送至客户端的每条数据被终止。客户端被要求初始化新rpc协议,以接收下一个消息。轮询方法要求客户端通过周期性地生成新rpc协议以从服务器接收数据来轮询服务器。

例如,对于服务器到客户端通信,方法包括一次发送一个请求和长期存活的请求。一次发送一个请求方法要求第一请求作为承载应用层协议语义的握手请求被发送。长期存活的请求方法要求单个rpc协议继续将请求数据发送至服务器。当请求数据的流送结束时,rpc协议完成。

这些双tcp连接方法是双向的但是不是双工的。这样的双tcp连接方法招致增加的成本,其进而引入增加的开销。增加的tcp连接消耗系统和网络资源。每个都在不同的tcp连接上发生的请求流送和响应流送要求两个连接保持被激活。这增加附加的网络业务。双tcp连接方法还使得http不足以用作独立协议,同时要求附加的应用级协议来处理两个连接。



技术实现要素:

实施例涉及服务器和客户端之间的数据流送能力。在第一实施例中,计算机实现的方法向具有全双工能力的客户端提供经由单个协议连接通过基于远程过程调用的通信协议建立全双工双向通信流的能力。全双工通信经由网络通过具有全双工能力的客户端和服务器之间的单个协议连接被发起,其中,具有全双工能力的客户端被配置成通过将初始握手发送至服务器来占用(engage)服务器。在服务器通过单个协议连接经由网络接受初始握手之后,客户端请求流通过全双工客户端被流送至服务器。通过单个协议连接从服务器接受响应流,同时具有全双工能力的客户端通过单个协议连接流送客户端请求流。当客户端请求流和响应流同时通过单个协议连接通信时,通过基于远程过程调用的通信协议使能全双工双向通信流。

在第二实施例中,系统向具有全双工能力的服务器提供经由单个协议连接通过基于远程过程调用的通信协议建立全双工双向通信流的能力。服务器连接模块完成经由网络通过具有全双工能力的服务器和客户端之间的单个协议连接的全双工通信的初始化,其中,具有全双工能力的服务器被配置成接受来自客户端的初始握手。服务器接受模块通过单个协议连接接受请求流。服务器传递模块将由具有全双工能力的服务器接收的请求流传送至服务器应用。服务器流送模块通过单个协议连接经由网络由应用将包括对请求流的应用响应的服务器响应流流送至客户端。当服务器响应流和请求流同时使用单个协议连接时,服务器使能模块通过基于远程过程调用的通信协议使能全双工双向通信流。

以下参考附图详细地描述进一步实施例、特征、和优点以及各个实施例的结构和操作。

附图说明

参考附图描述实施例。在图中,类似参考数字可以指示相同或功能类似的元件。

图1示出根据实施例的全双工双向通信系统;

图2示出根据实施例的包括客户端应用和服务器应用的全双工双向通信系统;

图3示出根据实施例的客户端服务器全双工双向通信协议;

图4示出根据实施例的全双工双向通信系统架构;

图5示出根据实施例的用于具有全双工能力的客户端的操作的示范方面的流程图;

图6示出根据实施例的示出用于具有全双工能力的服务器的操作的示范方面的流程图。

具体实施方式

全双工双向通信提供通过单个协议连接服务器将数据流送到客户端并且同时客户端将数据流送到服务器的能力。在在此的具体实施方式中,对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不必包括该特定特征、结构、或特性。而且,这样的短语不必是指相同实施例。而且,当特定特征、结构或特性可以结合一实施例描述时,其可以被认为,连同在此明确或未明确描述的其他实施例实现这样的特征、结构或特性,可以在本领域技术人员的认识内。

概述

图1示出可以实现实施例或其部分的客户端-服务器网络系统100。系统100包括具有全双工能力的服务器102、具有全双工能力的客户端112、网络108、以及单个tcp连接130。

一般来说,一个或多个具有全双工能力的客户端112通过网络108连接至具有全双工能力的服务器102。在实施例中,具有全双工能力的服务器102可以包括常规的web服务器、电子邮件服务器、或根据本公开中的教导修改的文件传送服务器。具有全双工能力的服务器102可以是包括至少一个处理器、至少一个存储器、以及至少一个网络接口的设备。

具有全双工能力的客户端112可以是包括至少一个处理器、至少一个存储器、以及至少一个网络接口的设备。例如,具有全双工能力的客户端112可以在个人计算机、手持计算机、个人数字助理、智能手机、移动电话、游戏控制台、机顶盒等上实现。

网络108可以包括一个或多个网络,诸如互联网。在一些示例中,网络108可以包括一个或多个广域网(wan)或局域网(lan)。网络108可以包括一种或多种网络技术,诸如以太网、快速以太网、吉比特以太网、诸如wifi的ieee802.11标准的变体等。通过网络108的通信使用包括诸如tcp的可靠流协议的一个或多个网络通信协议发生。这些示例是示意性的并且不用于限制本公开。

具有全双工能力的客户端112和具有全双工能力的服务器102可以使用诸如tcp的协议通过网络108进行数据通信。tcp是可靠流协议,还被已知为保证传递协议或面向连接协议,其中,“可靠”和“保证传递”是指确保数据传递的协议的性质。可靠流协议提供从一个计算机到另一个计算机的字节流的可靠顺序传递。可靠流协议通过管理消息传输和确认、丢弃的数据片段重传、以及传递超时等确保数据传递。可靠流协议可以与不提供数据片段的可靠传递的“简单”或“无连接”传输协议形成对比。无连接协议的一个这样的示例是用户数据报协议(udp)。在udp中,不存在被发送至接收方的数据片段在传输期间是否丢失的指示。如在此的描述中假定的本领域技术人员将理解的,远程过程协议(rpc)是实现诸如但不限于tcp的通信层协议的应用层协议。

参考作为示范性可靠流协议的tcp描述在此的实施例;然而,识别根据本公开中的教导可采用的其他参考可靠流协议在本领域技术人员的认识内。

使能具有全双工能力的服务器102和具有全双工能力的客户端112之间的数据通信的一种方法是建立具有全双工能力的服务器102和具有全双工能力的客户端112之间的全双工双向通信。例如,与单独协议连接上的双向通信的常规方法相比,全双工双向通信使能通过单个协议连接在具有全双工能力的服务器102和具有全双工能力的客户端112之间的数据流送。

全双工双向通信

图2示出可以实现实施例或其部分的示例全双工双向通信系统200。系统200包括具有全双工能力的服务器102、具有全双工能力的客户端112、网络108、客户端应用280、服务器应用230、以及单个tcp连接130。具有全双工能力的服务器102包括服务器通信堆栈210和服务器代理220。具有全双工能力的客户端112包括客户端通信堆栈260和客户端代理270。网络108包括网络代理250。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102使用rpc通信协议通过单个tcp连接130参与全双工双向通信。为了在不破坏rpc协议的语义的情况下使得这样的双向通信成为可能,通过插入必须语义以允许这样的双向通信的协议扩展,来更改rpc协议。特别是,通过单个tpc连接130的全双工双向通信遵循诸如基本http请求-响应语义的rpc通信协议语义,具有支持双向通信的附加语义。以此方式,使用http通过单个tcp连接130的全双工双向通信提供能够同时进行全双工的服务器102和具有全双工能力的客户端112之间的流送。

例如,在具有全双工能力的客户端112将请求发送至具有全双工能力的服务器102的同时,具有全双工能力的服务器102可以将响应发送至具有全双工能力的客户端112。具有全双工能力的服务器102和具有全双工能力的客户端112被明确地设计成支持同时流送。标准http不足以单独支持通过单个tcp连接130的全双工双向通信。附加协议要求使能具有全双工能力的服务器102和具有全双工能力的客户端112使用诸如http的rpc协议有效地参与通过单个tcp连接130的全双工双向通信。

具有全双工能力的客户端112经由网络108通过到具有全双工能力的服务器102的单个tcp连接130,通过基于rpc的通信协议发起请求数据流。具有全双工能力的服务器102接收请求数据流。具有全双工能力的服务器102通过发起响应数据流,对请求数据流作出响应。具有全双工能力的服务器102经由网络108通过到具有全双工能力的客户端112的单个tcp连接130,通过基于rpc的通信协议流送响应数据流。具有全双工能力的客户端112接收响应数据流。请求数据流和响应数据流同时通过建立全双工双向通信的单个tcp连接130操作。

在一个实施例中,客户端应用280和服务器应用230分别与具有全双工能力的客户端112和具有全双工能力的服务器102通信。如上所述,具有全双工能力的客户端112可以在个人计算机、手持计算机、个人数字助理、智能电话、移动电话、游戏控制台、机顶盒等上实现。在此的说明书中假定的本领域技术人员将理解,客户端应用280包括在以上任何一个上操作的应用。如在此的说明书中假定的相关技术领域中的技术人员将理解,服务器应用230包括在以上任何一个上操作的应用。

客户端应用280发起对具有全双工能力的客户端112的请求,以与服务器应用230通信。具有全双工能力的客户端112向具有全双工能力的服务器102发起包含客户端应用280的请求的请求数据流。具有全双工能力的服务器102接收请求数据流,并且实时地将请求从客户端应用280传递至服务器应用230。服务器应用230处理请求,并且将对请求的响应发送至具有全双工能力的服务器102。具有全双工能力的服务器102发起包含对由服务器应用230发送的请求的响应的响应数据流。具有全双工能力的服务器102将响应数据流流送到具有全双工能力的客户端112。具有全双工能力的客户端112接收响应数据流,并且将响应从服务器应用230传递到客户端应用280。请求数据流和响应数据流同时通过建立全双工双向通信的单个tcp连接130操作。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信可以由服务器应用230完全控制。全双工双向通信可以限于已由具有全双工能力服务器102明确识别的客户端。可以要求不受服务器应用230控制的客户端应用280通过向服务器应用230流送url参数和/或报头告知其能力,以参与全双工双向通信。不受服务器应用230控制和/或不被服务器应用230验证为具有全双工双向通信能力的客户端应用280不应该参与全双工双向通信。

在一个实施例中,当客户端代理270、网络代理250、以及服务器代理220允许这样的全双工通信时,可以建立具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工通信。如在此的说明书中假定的相关领域中的技术人员将理解,代理用作用于诸如但不限于设法使用彼此的资源的客户端、服务器、或网络的通信设备之间的请求的中介。代理依赖用于允许或不允许对代理代表的通信设备的访问的过滤规则。例如,代理可以使用允许基于诸如http的通信协议的请求来访问通信设备但是不允许基于其他协议的请求的过滤规则。

网络代理250、服务器代理220、以及客户端代理270分别包括允许基于基于rpc的通信协议的数据流流送到网络108、具有全双工能力的服务器102、以及具有全双工能力的客户端112的过滤规则。如果数据流基于不同于rpc的通信协议,则网络代理250、服务器代理220、以及客户端代理270可以分别拒绝对网络108、具有全双工能力的服务器102、以及具有全双工能力的客户端112的数据流访问。然而,由具有全双工能力的客户端112和具有全双工能力的服务器102生成的请求和响应数据流是基于rpc的通信协议。结果,网络代理250、服务器代理220、以及客户端代理270允许请求和响应数据流经由网络108在具有全双工能力的客户端112和具有全双工能力的服务器102之间自由地流动。

在一个实施例中,网络代理250、服务器代理220、以及客户端代理270可以不允许来自具有全双工能力的服务器102的早响应。网络代理250、服务器代理220、以及客户端代理270还可以缓冲来自具有全双工能力的客户端112的请求和来自具有全双工能力的服务器102的响应。在缓冲时,客户端应用280和/或服务器应用230可以从全双工双向通信切换至使用两个连接而不是单个tcp连接130的不同协议。具有全双工能力的客户端112和具有全双工能力的服务器102可以实现这样的退回技术,诸如轮询。具有全双工能力的客户端112还可以实现在短超时时间段内等待来自具有全双工能力的服务器102的初始响应的退回技术。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102中的每个都具有通信接口。客户端通信堆栈260用作用于具有全双工能力的客户端112的通信接口。服务器通信堆栈210用作用于具有全双工能力的服务器102的通信接口。

具有全双工能力的服务器102的客户端通信堆栈260接收由客户端应用280生成的请求。客户端通信堆栈260经由网络108通过单个tcp连接130向服务器通信堆栈210发起请求数据流。由具有全双工能力的客户端112生成的请求数据流基于基于rpc的通信协议,所以网络代理250和服务器代理220允许请求数据流流过网络并且访问具有全双工能力的服务器102。服务器通信堆栈210从具有全双工能力的客户端112接收请求数据流,并且将请求数据流传送至服务器应用230。

服务器应用230将对请求数据流的响应发送至服务器通信堆栈210。服务器通信堆栈210经由网络108通过单个tcp连接130向客户端通信堆栈260发起响应数据流。由具有全双工能力的服务器102生成的响应数据流基于基于rpc的通信协议,所以网络代理250和客户端代理270允许响应数据流流过网络108并且访问具有全双工能力的客户端112。客户端通信堆栈260接收响应数据流并且将响应发送至客户端应用280。请求数据流和响应数据流同时通过建立全双工双向通信的单个tcp连接130操作。服务器通信堆栈210和客户端通信堆栈260提供消息传递支持和所要求的传递担保。

全双工双向通信语义

图3示出可以实现实施例或其部分的示例全双工双向通信系统300。系统300包括具有全双工能力的客户端112和具有全双工能力的服务器102。具有全双工能力的客户端112和具有全双工能力的服务器102参与一系列数据交换,以建立全双工双向通信。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102通过遵循一系列全双工双向通信语义建立全双工通信。具有全双工能力的客户端112通过将初始握手请求310发送至具有全双工能力的服务器102,发起与具有全双工能力的服务器102的全双工通信。具有全双工能力的服务器102接受或拒绝初始握手请求310。如果具有全双工能力的服务器102拒绝初始握手请求310,则具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工通信失败。

如果具有全双工能力的服务器102接受来自具有全双工能力的客户端112的初始握手请求310,则建立具有全双工能力的服务器102和具有全双工能力的客户端112之间的全双工通信。具有全双工能力的服务器102通过以初始握手接受320进行响应,接受初始握手请求310。一旦具有全双工能力的客户端112接收到初始握手接受320,则具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工通信就完成。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工通信可以通过基于http语义的握手的完成被建立。初始握手请求310遵循http语义。具有全双工能力的客户端112将http请求发送至具有全双工能力的服务器102。http请求之后为主体(body)完成初始握手请求310。初始握手接受320也遵循http语义,其中,具有全双工能力的服务器102通过将响应报头发送至具有全双工能力的客户端112对初始握手请求310进行响应。一旦具有全双工能力的客户端112从具有全双工能力的服务器102接收到报头,基于http的握手就完成,并且建立具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工通信。

在一个实施例中,接着通过具有全双工能力的客户端112接收初始握手接受320,发起具有全双工能力的客户端112和具有全双工能力的服务器102之间的数据流。具有全双工能力的客户端112发起请求流330,并且将请求流330流送到具有全双工能力的服务器102。具有全双工能力的服务器102从具有全双工能力的客户端112接收请求流330,并且在完成请求流330之前,通过将响应流340流送至具有全双工能力的客户端112来响应。当通过单个tcp连接130,具有全双工能力的客户端112将请求流330流送至具有全双工能力的服务器102并且同时具有全双工能力的服务器102将响应流340流送至具有全双工能力的客户端112时,可以建立全双工双向通信350。

在一个实施例中,全双工双向通信350在具有全双工能力的客户端112和具有全双工能力的服务器102之间继续,直到具有全双工能力的客户端112终止请求流330为止。通过具有全双工能力的客户端112终止请求流330终止全双工双向通信350,但是不终止通信链路。具有全双工能力的客户端112继续接收来自具有全双工能力的服务器102的响应流340,只要具有全双工能力的服务器102继续流送响应流340即可。当具有全双工能力的服务器102终止流送响应流340并且具有全双工能力的客户端112接收表示响应流340的结束的响应流终止370时,终止全双工通信。

在具有全双工能力的服务器102接收到表示请求流330的结束的请求流终止360之前,具有全双工能力的服务器102可以终止响应流340。在响应流340已被终止之后请求流330继续的情况下,在接收到请求流终止360之前终止响应流340的具有全双工能力的服务器102在http中被认为处于非法状态。从而,具有全双工能力的客户端112可以在从具有全双工能力的服务器102接收到表示响应流340的结束的响应流终止370时,立即终止请求流330。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信350通过可以包括http的基于rpc的通信协议被建立。在这样的实施例中,全双工双向通信350遵循标准http语义。在通常涉及完整报头的接受的通过具有全双工能力的服务器102的初始握手请求310成功之后,具有全双工能力的客户端112向具有全双工能力的服务器102发起请求流330。遵循http语义,具有全双工能力的服务器102拒绝生成响应流340,直到具有全双工能力的服务器102已经从具有全双工能力的客户端112接收到一部分请求流330为止。

一旦具有全双工能力的服务器102已从具有全双工能力的客户端112接收到请求流330,具有全双工能力的服务器102就向具有全双工能力的客户端112发起响应流340。具有全双工能力的服务器102避免终止响应流340的流送,直到具有全双工能力的服务器102已经从具有全双工能力的客户端112接收到表示请求流330的结束的请求流终止360为止。具有全双工能力的客户端112继续从具有全双工能力的服务器102接收响应流340,直到具有全双工能力的客户端112从具有全双工能力的服务器102接收到表示响应流340的结束的响应流终止370为止。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信350基于错误情况被终止。特别是,当具有全双工能力的客户端112从具有全双工能力的服务器102接收到响应流340中的错误响应时,具有全双工能力的客户端112终止请求流330,由此终止全双工双向通信350。

当具有全双工能力的客户端112不能流送请求流330时或者当请求流330超时时,具有全双工能力的客户端112终止请求流330,由此终止全双工双向通信350。同样地,当具有全双工能力的服务器102不能流送响应流340时或者当响应流340超时时,具有全双工能力的服务器102终止响应流340,由此终止全双工双向通信350。

在一个实施例中,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信350可以支持管线传输(pipelining)。具有全双工能力的客户端112和具有全双工能力的服务器102可以通过保持永久连接来支持管线传输。当参与全双工双向通信350时,具有全双工能力的客户端112和具有全双工能力的服务器102通过使用相同的单个tcp连接130而不是在不同tcp连接之间交换,保持永久连接。当生成请求流330时的具有全双工能力的客户端112可以使单个tcp连接130不可用于管线传输请求。在请求流330终止之后继续响应流340的具有全双工能力的服务器102可以防止任何管线传输请求被处理。

系统400

图4是可以实现本发明的实施例或其部分的示例系统架构400。系统架构400包括耦接至客户端应用280的客户端初始化模块402。客户端使能模块408还可以耦接至客户端应用280。

服务器传递模块414可以耦接至服务器应用230。服务器流送模块416还可以耦接至服务器应用230。虽然图4中所示的实施例示出耦接至客户端初始化模块402和客户端使能模块408的客户端应用280以及耦接至服务器传递模块414和服务器流送模块416的服务器应用230,但是重点要注意,实施例可以用于在诸如网络化的基于云的架构的多种不同类型的计算机实现的数据源、系统和架构之间交换数据。

具有全双工能力的客户端112包括客户端通信堆栈260、初始化初始握手请求310的客户端初始化模块402、生成请求流330的客户端流送模块404、接收响应流340的客户端接受模块406、以及客户端使能模块408。具有全双工能力的服务器102包括服务器通信堆栈210、接收初始握手请求310的服务器连接模块410、接收请求流330的服务器接受模块412、传送请求流330的服务器传递模块414、接收服务器响应470并且生成响应流340的服务器流送模块416、以及服务器使能模块418。具有全双工能力的客户端112和具有全双工能力的服务器102通过单个tcp连接130通信。

通常,具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信如下操作。客户端应用280提供客户端请求420,其中,客户端请求420是初始化与服务器应用230的通信的请求。客户端初始化模块402从客户端应用280接收客户端请求420。基于客户端请求420,客户端初始化模块402生成初始握手请求310,以初始化通过具有全双工能力的客户端112和具有全双工能力的服务器102之间的单个tcp连接130的全双工通信。诸如单个tcp连接130的通信链路可以跨越流送rpc连接被重新使用。

在一个实施例中,客户端通信堆栈260和服务器通信堆栈210可以分别是用于具有全双工能力的客户端112和具有全双工能力的服务器102的接口。客户端通信堆栈260从客户端初始化模块402接收初始握手请求310,并且通过单个tcp连接130将初始握手请求310发送至具有全双工能力的服务器102。服务器通信堆栈210通过单个tcp连接130从具有全双工能力的客户端112接收初始握手请求310。服务器通信堆栈210将初始握手请求310发送至服务器连接模块410。服务器连接模块410接受完成通过单个tcp连接130的在具有全双工能力的客户端112和具有全双工能力的服务器102之间的握手的初始握手请求310。

一旦通过单个tcp连接130的在具有全双工能力的客户端112和具有全双工能力的服务器102之间的握手完成,客户端流送模块404就生成包含客户端请求420的请求流330。客户端通信堆栈260从客户端流送模块404接收请求流330,并且通过单个tcp连接130将请求流330流送到具有全双工能力的服务器102。服务器通信堆栈210从具有全双工能力的客户端112接收请求流330。服务器通信堆栈210将请求流330发送至服务器接受模块412。服务器接受模块412接受请求流330。

在一个实施例中,服务器接受模块412将请求流330发送至服务器传递模块414。服务器传递模块414将请求流330传送至服务器应用230。服务器应用230接收包含客户端请求420的请求流330,并且通过服务器响应470来响应客户端请求420。服务器应用230将服务器响应470发送至服务器流送模块416。服务器流送模块416接收服务器响应470,并且生成包含服务器响应470的响应流340。服务器流送模块416将服务器响应流340流送至服务器使能模块418。

在一个实施例中,当服务器使能模块418将响应流340流送到服务器通信堆栈210时,服务器使能模块418使能通过单个tcp连接130的全双工双向通信流。当具有全双工能力的客户端112将请求流330流送到使能全双工双向通信的具有全双工能力的服务器102时,服务器通信堆栈210进而通过单个tcp连接130将响应流340发送至具有全双工能力的客户端112。

在一个实施例中,客户端通信堆栈260通过单个tcp连接130从具有全双工能力的服务器102接收响应流340。客户端通信堆栈260将响应流340发送至客户端接受模块406。客户端接受模块406接受响应流340,同时具有全双工能力的客户端112将请求流330流送到具有全双工能力的服务器102。客户端接受模块将服务器响应流340发送至客户端使能模块308。当通过单个tcp连接130,响应流340流送到具有全双工能力的客户端112并且同时请求流330流送到具有全双工能力的服务器102时,客户端使能模块308使能具有全双工能力的客户端112和具有全双工能力的服务器102之间的全双工双向通信。

模块可以由具有全双工能力的客户端112和具有全双工能力的服务器102使用。如在此参考的,模块可以是具有一个或多个处理器的任何类型的处理(或计算)设备。例如,模块可以是工作站、移动设备、计算机、计算机集群、机顶盒、或具有至少一个处理器的其他设备。在一个实施例中,多个模块可以实现在同一处理设备上。软件可以包括一个或多个应用和操作系统。硬件可以包括但不限于处理器、存储器、和/或图形用户界面显示器。

方法500

图5示出建立与具有全双工能力的客户端的全双工双向通信的示范方法500的流程图。如图5中所示,方法500在具有全双工能力的客户端发起与服务器的全双工通信时开始于步骤510。例如,如图1和图3中所示,具有全双工能力的客户端112经由网络108通过具有全双工能力的客户端112和具有全双工能力的服务器102之间的单个tcp连接130发起全双工通信。具有全双工能力的客户端112被配置成通过将初始握手请求310发送至具有全双工能力的服务器102,占用具有全双工能力的服务器102。步骤510可以通过例如客户端初始化模块402执行。一旦步骤510完成,方法500就进行至步骤520。

在步骤520,具有全双工能力的客户端将客户端请求流流送到服务器。例如,如图1和图3中所示,在通过单个tcp连接130经由网络108通过具有全双工能力的服务器102的初始握手请求310的初始握手接受320之后,具有全双工能力的客户端112将请求流330流送到具有全双工能力的服务器102。步骤520可以通过例如客户端流送模块404执行。一旦步骤520完成,方法500就进行至步骤530。

在步骤530,具有全双工能力的客户端接受来自服务器的响应流。例如,如图1和图3中所示,具有全双工能力的客户端112通过单个tcp连接130接受来自具有全双工能力的服务器102的响应流340,同时具有全双工能力的客户端112通过单个tcp连接130流送请求流330。步骤540可以通过例如客户端接受模块406执行。一旦步骤530完成,方法500就进行至步骤540。

在步骤540中,通过基于远程过程调用的通信协议,使能全双工双向通信流。例如,如图1和图3中所示,当请求流330和响应流340同时通过单个tcp连接130通信时,通过基于远程过程调用的通信协议,使能全双工双向通信350。步骤540可以通过例如客户端使能模块408执行。当步骤540完成时,方法500结束。

实施例可以通过除了在此描述的那些之外的软件、硬件、和/或操作系统实现工作。可以使用适用于执行在此描述的功能的任何软件、硬件、以及操作系统实现。实施例可应用至客户端和服务器或两者。

方法600

图6示出用于与具有全双工能力的服务器建立全双工双向通信的示范方法600的流程图。如图6中所示,方法600开始于步骤610,其中,经由网络通过具有全双工能力的服务器和客户端之间的单个协议连接完成全双工通信。例如,如图1和图3中所示,经由网络108通过具有全双工能力的服务器102和具有全双工能力的客户端112之间的单个tcp连接130完成全双工通信。具有全双工能力的服务器102被配置成从具有全双工能力的客户端112接受初始握手请求310。步骤610可以通过例如服务器连接模块410执行。一旦步骤610完成,方法600就进行至步骤720。

在步骤620,具有全双工能力的服务器通过单个协议连接接受请求流。例如,如图1和图3中所示,具有全双工能力的服务器102通过单个tcp连接130接受请求流330。步骤620可以通过例如服务器接受模块412执行。一旦步骤620完成,方法600就进行至步骤630。

在步骤630,由具有全双工能力的服务器接收的请求流被传送至服务器应用。例如,如图1和图2以及图3中所示,由具有全双工能力的服务器102接收的请求流330被传送至服务器应用230。步骤630可以通过例如服务器传递模块414执行。一旦步骤630完成,方法600就进行至步骤740。

在步骤640,具有全双工能力的服务器将服务器响应流流送到客户端。例如,如图1和图3中所示,具有全双工能力的服务器102通过单个tcp连接130经由网络108通过服务器应用230将包括对请求流330的应用响应的响应流340流送到具有全双工能力的客户端112。步骤640可以通过例如服务器流送模块416执行。一旦步骤640完成,方法600就进行至步骤650。

在步骤650,通过基于远程过程调用的通信协议,使能全双工双向通信流。例如,如图1和图3中所示,当响应流340和请求流330同时使用单个tcp连接130时,通过基于远程过程调用的通信协议使能全双工双向通信350。当步骤650完成时,方法600结束。

实施例可以通过除了在此描述的那些之外的软件、硬件、和/或操作系统实现工作。可以使用适用于执行在此描述的功能的任何软件、硬件、和操作系统实现。实施例可应用至客户端和服务器或者两者的结合。

结论

实施例可以通过除了在此描述的那些之外的软件、硬件、和/或操作系统实现工作。可以使用适用于执行在此描述的功能的任何软件、硬件、和操作系统实现。实施例可应用至客户端和服务器或者两者的结合。

发明内容和摘要部分可以阐述发明人预期的一个或多个但不是所有示范实施例,并且从而不旨在以任何方式限制本发明和所附权利要求。

通过示出指定功能的实现及其关系的功能块的帮助,以上描述了实施例。为了描述的方便,这些功能块的边界可以在此被任意限定。只要指定功能及其关系被适当地执行,就可以限定替选边界。

通过应用本领域技术人员的知识,特定实施例的以上描述完全揭露了本发明的一般特性,在不脱离本发明的总体思想的情况下,容易地修改和/或适用于诸如特定实施例的多种应用,而不需要不适当的实验。从而,基于在此呈现的教导和指导,这样的适配和修改旨在所公开的实施例的意义及其等价范围内。将理解,在此的措辞和术语用于描述而不用于限制的目的,使得本说明的术语或措辞将由技术人员根据教导和指导来解释。

本发明的宽度和范围不由上述示范实施例中的任一个限制,而是仅根据以下权利要求及其等价物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1