专利名称:基于http协议的数据传输装置及其实现方法
技术领域:
本发明涉及网络数据传输领域,尤其涉及一种基于HTTP协议的数据传输装置 及其实现方法。
背景技术:
目前在一些数据通信场合,往往需要选择HTTP协议来实现客户端和服务端之 间的数据传输,而不是直接采用TCP协议。例如手机应用软件,由于手机信号具有时强 时弱的特性,所以常常需要采用HTTP协议来实现与服务端之间的数据通信。又比如为了 网络安全,某些网络环境只允许HTTP协议的数据包通过防火墙,在这些网络环境中的 客户端或服务端软件也常常需要采用HTTP协议来实现数据通信。由于HTTP是一种请求 /响应方式的传输协议,服务端和客户端之间的连接是断续的,所以在现有的一些实时性 强或者数据传输量比较大的应用系统中,采用HTTP协议常常会由于不断请求服务端造成 数据传输的效率降低。发明内容
本发明目的是提供一种基于HTTP协议的数据传输装置,以减少请求和回应发 送次数的方式来提高HTTP协议的数据传输效率。
本发明基于HTTP协议的数据传输系统,包括发送请求的客户端子系统和响应 请求的服务端子系统;其中所述客户端子系统内部包括应用业务模块C01、请求消息缓 冲模块C02、响应消息缓冲模块C03和请求消息发送模块C04;所述服务端子系统内部包 括请求消息接收模块S01、会话管理模块S02、请求消息缓冲模块S03、响应消息缓冲模 块S04和请求消息处理模块S05 ;通过所述客户端子系统将多个HTTP请求消息一次性发送给服务端子系统,所述服务 端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求响应消息一次性发送 回所述客户端子系统,减小数据包的传送次数。
进一步,所述客户端子系统和所述服务端子系统可以为功能集成化的服务器, 里面加载了数据转发计算程序,所述服务器之间通过无线或有线网络通讯。
进一步,本发明还提供一种根据上述系统进行基于HTTP协议的数据传输方 法,包括步骤a、在客户端子系统设置一个请求消息缓冲模块和一个请求消息发送模块,所有客户 端发起的HTTP请求消息先进入所述请求消息缓冲模块,所述请求消息发送模块则循环地 检测请求消息缓冲模块,一旦发现存在HTTP请求消息,则把所述请求消息缓冲模块中 的所有HTTP请求消息按先后顺序一次性发送给服务端子系统;b、所述服务端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求响应 消息一次性发送回所述客户端子系统,减小数据包的传送次数。
本发明中,在客户端设置一个请求消息缓冲模块和一个请求消息发送模块。所有客户端发起的请求消息先进入缓冲模块,请求消息发送模块则循环地检测请求消息缓 冲模块,一旦发现存在请求消息,则把缓冲模块中的所有请求消息按先后顺序一次性发 送给服务端,并同时接收服务端的回应消息。如果在完成一次HTTP数据传输的时间 之内,客户端发起新的请求消息大于一个的情况下,显而易见地节省了请求和回应的次数。
在现有技术中,服务端向客户端主动发送的消息,通常是需要客户端不断地发 送HTTP请求才能获取。而在本发明中,只要客户端有任何HTTP请求过来,就能把这些 主动请求消息和请求的回应消息一起发送回客户端,从而减少发送主动请求消息的次数 和发送回应消息的次数,大大提高了传输的效率。
图1是本发明实施例提供的基于HTTP协议的数据传输系统工作原理图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进 一步地详细描述。
如图1所示,本发明实施例提供的基于HTTP协议的数据传输系统,包括发送请 求的客户端子系统和响应请求的服务端子系统;其中所述客户端子系统内部包括应用业 务模块C01、请求消息缓冲模块C02、响应消息缓冲模块C03和请求消息发送模块C04; 所述服务端子系统内部包括请求消息接收模块S01、会话管理模块S02、请求消息缓冲模 块S03、响应消息缓冲模块S04和请求消息处理模块S05 ;通过所述客户端子系统将多 个HTTP请求消息一次性发送给服务端子系统,服务端子系统接收处理所述HTTP请求消 息,将响应消息和其它非请求响应消息一次性发送回所述客户端子系统,从而减小数据 包的传送次数。
具体的在所述客户端子系统中所述应用业务模块C01,是请求消息的发起者,也是响应消息的请求者,它并不直接 向服务端子系统发送消息请求和接收响应消息,而是用于将发送的请求消息存入请求消 息缓冲模C02,并从响应消息缓冲模块C03取出响应消息逐一进行处理;需说明的是, 应用业务模块COl发起的第一个消息必须是登录消息,以取得服务端子系统为该业务端模 块分配的HTTP的会话号;所述请求消息缓冲模块C02,用于存储发送消息,其内存缓冲区的消息遵循先进先 出的原则;所述响应消息缓冲模块C03,用于存储响应消息,其内存缓冲区的消息遵循先进先 出的原则;所述请求消息发送模块C04,用于将请求消息缓冲模块C02中当前保存的所有消息 一次性读取,并按消息的先后顺序逐个拷贝到HTTP的POST数据区,发送到服务端子系 统;并接收所述服务端子系统的响应消息,解析为一个个独立的消息保存到所述响应消 息缓冲模块C03中,等待所述应用业务模块COl进行处理。
在所述服务端子系统中所述请求消息接收模块S01,用于接收来自所述客户端子系统的请求消息,判断是否 为登录消息,如果是则将请求消息递给所述会话管理模块S02进行处理,否则将请求消 息分解为一个个原始的请求消息,然后传递到请求消息缓冲模块S03进行存储,同时将 发送消息的客户端对应的所述响应消息缓冲模块S04中的计数器值设置为原始请求消息 的数目;所述会话管理模块S02,用于接收来自所述请求消息接收模块SOl传递的登录消息, 为该客户端生成一个新的会话号,并在请求消息缓冲模块或响应消息缓冲模块中创建一 个对应的响应消息缓冲区;所述请求消息缓冲模块S03,用于存储请求消息,其内存缓冲区的消息遵循先进先出 的原则;所述响应消息缓冲模块S04,用于存储请求消息,还用于转发应用业务模块的消息给 客户端子系统;每个客户端都对应一个缓冲模块,并包含一个计数器,用于记录尚未回应 的请求消息数目,消息遵循先进先出的原则;所述请求消息处理模块S05,是包含一个或多个处理线程,每个线程不断地逐个读取 所述请求消息缓冲模块S03里边的消息并进行响应的处理,每响应一条消息,同时将客 户端在服务端对应的响应消息缓冲区中的计数器值减一,如果发现计数器值为零,则将 响应消息缓冲区中的所有消息一次性读取,按消息的先后顺序,逐个拷贝到HTTP消息 的数据区发送回客户端;所述应用业务模块S06,用于将应用业务需要向客户端主动发送的消息传递到所述 响应消息缓冲模块S04中存储,等待下一个客服端请求处理完成后一并发送到所述客户 端子系统。
图1中对数据传输的方向如箭头所示,具体应用中,所述客户端子系统和所述 服务端子系统可以为功能集成化的服务器,所述服务器之间通过无线或有线网络通讯。
本发明实施例还提供采用上述系统进行基于HTTP协议的数据传输方法,包 括步骤a、在客户端子系统设置一个请求消息缓冲模块和一个请求消息发送模块,所有 客户端发起的HTTP请求消息先进入所述请求消息缓冲模块,所述请求消息发送模块则循 环地检测请求消息缓冲模块,一旦发现存在HTTP请求消息,则把所述请求消息缓冲模 块中的所有HTTP请求消息按先后顺序一次性发送给服务端子系统;步骤b、所述服务端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求 响应消息一次性发送回所述客户端子系统,减小数据包的传送次数。
其中步骤b具体包括通过请求消息接收模块接收来自所述客户端子系统的请求消息,判断是否为登录消 息,如果是则将请求消息递给会话管理模块进行处理,否则将请求消息分解为一个个原 始的请求消息,然后传递到请求消息缓冲模块进行存储,同时将发送消息的客户端对应 的响应消息缓冲模块中的计数器值设置为原始请求消息的数目;通过会话管理模块接收来自请求消息接收模块传递的登录消息,并为该客户端生成 一个新的会话号,并在请求消息缓冲模块或响应消息缓冲模块中创建一个对应的响应消 息缓冲区;通过所述请求消息处理模块里的每个处理线程不断地逐个读取请求消息缓冲模块里 边的消息并进行响应的处理,每响应一条消息,同时将客户端在服务端对应的响应消息 缓冲区中的计数器值减一,如果发现计数器值为零,则将响应消息缓冲区中的所有消息 一次性读取,按消息的先后顺序,逐个拷贝到HTTP消息的数据区发送回客户端;通过应用业务模块将应用业务需要向客户端主动发送的消息传递到所述响应消息缓 冲模块中存储,等待下一个客服端请求处理完成后一并发送到所述客户端子系统。
利用本发明装置,在客户端可以将多个HTTP请求消息一次性发送给服务端, 服务端接收到这些请求消息处理后也将响应消息并其它非请求响应消息一次性发送回客 户端,从而减小了数据包的传送次数,提高了数据传输效率。
本发明的装置和方法具体应用实施例如下比如在手机网络游戏项目中,往往 因网络不够稳定、或者为方便用户(在大部分手机中HTTP协议是不需要设置连接参数 的,TCP协议则需要用户自己去设置连接参数)等原因需要选择HTTP协议来实现数据传 输。在该类项目中数据传输量大,实时性要求也较强客户端一方面需要根据用户的具 体操作向服务端请求特定的数据,另一方面也需要不断地将玩家的状态(如血量、战斗 结果、在地图中的位置等)信息发送回服务端,同时还需要不断地请求服务端接收其它 玩家的状态信息和服务端主动发送的其它信息;服务端则需要响应玩家具体的请求,并 将其它玩家的状态信息、公会公告、聊天信息等主动发送到相关联的所有客户端。利用 本发明装置来实现该类项目的HTTP数据传输,明显能提高数据传输的效率,从而提高 游戏的流畅性和用户的体验感。
以上所述是本发明的优选实施方式而已,当然不能以此来限定本发明之权利范 围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出 若干改进和变动,这些改进和变动也视为本发明的保护范围。
权利要求
1.一种基于HTTP协议的数据传输系统,其特征在于,包括发送请求的客户端子系统 和响应请求的服务端子系统;其中所述客户端子系统内部包括应用业务模块(COl)、请 求消息缓冲模块(C02)、响应消息缓冲模块(C03)和请求消息发送模块(C04);所述服 务端子系统内部包括请求消息接收模块(SOl)、会话管理模块(S02)、请求消息缓冲模块 (S03)、响应消息缓冲模块(S04)和请求消息处理模块(S05);通过所述客户端子系统将多个HTTP请求消息一次性发送给服务端子系统,所述服务 端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求响应消息一次性发送 回所述客户端子系统,减小数据包的传送次数。
2.根据权利要求1所述基于HTTP协议的数据传输系统,其特征在于,在所述客户端 子系统中所述应用业务模块(COl),用于将发送的请求消息存入请求消息缓冲模(C02),并从 响应消息缓冲模块(C03)取出响应消息逐一进行处理;所述请求消息缓冲模块(C02),用于存储发送消息,其内存缓冲区的消息遵循先进 先出的原则;所述响应消息缓冲模块(C03),用于存储响应消息,其内存缓冲区的消息遵循先进 先出的原则;所述请求消息发送模块(C04),用于将请求消息缓冲模块(C02)中当前保存的所有消 息一次性读取,并按消息的先后顺序逐个拷贝到HTTP的POST数据区,发送到服务端子 系统;并接收所述服务端子系统的响应消息,解析为一个个独立的消息保存到所述响应 消息缓冲模块(C03)中,等待所述应用业务模块(COl)进行处理。
3.根据权利要求1所述基于HTTP协议的数据传输系统,其特征在于,在所述服务端 子系统中所述请求消息接收模块(SOl),用于接收来自所述客户端子系统的请求消息,判断 是否为登录消息,如果是则将该请求消息递给所述会话管理模块(S02)进行处理,否则 将请求消息分解为一个个原始的请求消息,然后传递到请求消息缓冲模块(S03)进行存 储,同时将发送消息的客户端对应的所述响应消息缓冲模块(S04)中的计数器值设置为 原始请求消息的数目;所述会话管理模块(S02),用于接收来自所述请求消息接收模块(SOl)传递的登录消 息,为该客户端生成一个新的会话号,并在请求消息缓冲模块(S03)或响应消息缓冲模 块(S04)中创建一个对应的响应消息缓冲区;所述请求消息缓冲模块(S03),用于存储请求消息,其内存缓冲区的消息遵循先进先 出的原则;所述响应消息缓冲模块(S04),用于存储请求消息,还用于转发应用业务模块的消息 给客户端子系统;所述请求消息处理模块(S05),是包含一个或多个处理线程,每个线程不断地逐个读 取所述请求消息缓冲模块(S03)里边的消息并进行响应的处理,每响应一条消息,同时 将客户端在服务端对应的响应消息缓冲区中的计数器值减一,如果发现计数器值为零, 则将响应消息缓冲区中的所有消息一次性读取,按消息的先后顺序,逐个拷贝到HTTP 消息的数据区发送回客户端;所述应用业务模块(S06),用于将应用业务需要向客户端主动发送的消息传递到所 述响应消息缓冲模块(S04)中存储,等待下一个客服端请求处理完成后一并发送到所述 客户端子系统。
4.根据权利要求2所述基于HTTP协议的数据传输系统,其特征在于,所述客户端子 系统和所述服务端子系统可以为功能集成化的服务器,所述服务器之间通过无线或有线 网络通讯。
5.根据权利要求1所述系统进行基于HTTP协议的数据传输方法,其特征在于,包括步骤a、在客户端子系统设置一个请求消息缓冲模块和一个请求消息发送模块,所有客户 端发起的HTTP请求消息先进入所述请求消息缓冲模块,所述请求消息发送模块则循环地 检测请求消息缓冲模块,一旦发现存在HTTP请求消息,则把所述请求消息缓冲模块中 的所有HTTP请求消息按先后顺序一次性发送给服务端子系统;b、所述服务端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求响应 消息一次性发送回所述客户端子系统,减小数据包的传送次数。
6.根据权利要求5所述基于HTTP协议的数据传输方法,其特征在于,步骤b具体包括通过请求消息接收模块接收来自所述客户端子系统的请求消息,判断是否为登录消 息,如果是则将请求消息递给会话管理模块进行处理,否则将请求消息分解为一个个原 始的请求消息,然后传递到请求消息缓冲模块进行存储,同时将发送消息的客户端对应 的响应消息缓冲模块中的计数器值设置为原始请求消息的数目;通过会话管理模块接收来自请求消息接收模块传递的登录消息,并为该客户端生成 一个新的会话号,并在请求消息缓冲模块或响应消息缓冲模块中创建一个对应的响应消 息缓冲区;通过所述请求消息处理模块里的每个处理线程不断地逐个读取请求消息缓冲模块里 边的消息并进行响应的处理,每响应一条消息,同时将客户端在服务端对应的响应消息 缓冲区中的计数器值减一,如果发现计数器值为零,则将响应消息缓冲区中的所有消息 一次性读取,按消息的先后顺序,逐个拷贝到HTTP消息的数据区发送回客户端;通过应用业务模块将应用业务需要向客户端主动发送的消息传递到所述响应消息缓 冲模块中存储,等待下一个客服端请求处理完成后一并发送到所述客户端子系统。
全文摘要
本发明公开了一种基于HTTP协议的数据传输系统,包括客户端子系统和服务端子系统;其中所述客户端子系统内部包括应用业务模块(C01)、请求消息缓冲模块(C02)、响应消息缓冲模块(C03)和请求消息发送模块(C04);所述服务端子系统内部包括请求消息接收模块(S01)、会话管理模块(S02)、请求消息缓冲模块(S03)、响应消息缓冲模块(S04)和请求消息处理模块(S05);通过所述客户端子系统将多个HTTP请求消息一次性发送给服务端子系统,所述服务端子系统接收处理所述HTTP请求消息,将响应消息和其它非请求响应消息一次性发送回所述客户端子系统,减小数据包的传送次数,提高了数据传输效率。
文档编号H04L29/06GK102025730SQ20101056901
公开日2011年4月20日 申请日期2010年12月2日 优先权日2010年12月2日
发明者陈汉忠 申请人:广州杰赛科技股份有限公司