一种基于Web服务器的通信方法及系统的利记博彩app

文档序号:7958489阅读:761来源:国知局
专利名称:一种基于Web服务器的通信方法及系统的利记博彩app
技术领域
本发明涉及通信和计算机技术,尤其涉及一种基于Web服务器的通信方法及系统。
背景技术
目前的客户机与服务器间一般采用套接字(SOCKET)方式进行网络通信。使用SOCKET的通信方式,传输速度一般比较快和稳定,但是在很多网络环境尤其是内部网中都设置了网络防火墙,只允许使用基本端口,如网络浏览端口80,其他端口不允许使用,如即时通信的聊天端口8000,在这种情况下,不能用传输控制协议(TCP)或者用户数据报协议(UDP)与服务器进行直接连接,所以客户端和服务器进行直接SOCKET连接的方式有一些局限性。
为了突破这种局限性,现有技术中有以下两种方式可采用第一种方式在服务器不是用基本端口的情况下,使用代理服务器突破防火墙的限制。代理服务器(Proxy)是客户机和服务器间的信息中转站。例如客户端需要与服务器的8000端口建立TCP连接,而此时网络防火墙只允许连接80端口,那么此时直接连接服务器的8000端口是不会成功的。如果有一个代理服务器,该代理服务器用80端口对外提供代理服务,且该代理服务器可以直接连接8000端口。在这这种情况下,客户机可以通过代理服务器与欲连接的服务器进行通信,步骤如下1、客户机与代理服务器的80端口建立TCP连接(网络防火墙允许);2、客户机将数据发到代理服务器的80端口;3、代理服务器收到数据,从数据包中获取要连接的目标服务器地址和端口(8000),代理服务器与目标服务器在8000端口建立起TCP连接,并将数据发送到目标服务器的8000端口;4、代理服务器接收目标服务器返回的数据,并通过80端口将数据发送给客户机(网络防火墙允许);5、客户机关闭于代理服务的连接,代理服务器关闭与目标服务器的连接。
但上述方式存在以下不足1、客户机完全依赖代理服务器提供服务,很难保证服务的稳定、安全与可用性;2、一般用户使用代理服务器,很多时候是利用了代理服务器本身的安全和管理漏洞,一旦代理服务器的管理人发现了非法的使用,随时都可以关闭服务,用户还可能面临法律风险。
第二种方式在服务器使用基本端口(比如80端口)的情况下的,客户机与服务器有可能通过基本端口直接建立TCP SOCKET连接进行通信。但这种方式仍存在以下不足1、该方式在很多情况下不能使用,其原因在于基本端口一般和具体的应用相关,比如80端口,一般用于提供HTTP(Web浏览)服务;21端口,一般提供TELNET(远程登录)服务。
2、对于功能简单的防火墙,对端口进行封锁的策略一般比较简单,只对传输层协议进行限制,而不限制应用层协议。比如,防火墙只允许在80端口进行TCP(传输层协议)连接,但不限制通过端口的是不是HTTP数据包(应用层协议);对于功能完备一些的防火墙,它可以在各个网络层次进行控制,只允许在基本端口绑定常规的应用。比如,防火墙只允许在80端口通过HTTP数据包,这时客户端和服务器建就不能够通过80端口进行通信。
另外,现有的Web服务在发送和接收都采用XML格式的数据,而且必须采用按照Web服务规范要求的特定xml格式。在提供Web服务时需要搭建一个Web服务的框架。一般通过两种方法一种方法是购买现成的支持Web服务的软件,比如BEA公司的WebLogic软件;这种方法虽然比较方便,但其价格昂贵,成本高。另一种方法是根据Web服务的规范自己编程实现Web架构,采用这种方法不仅工作量大,而且技术难度大。
在现有电子商务应用中,客户端“管理工具”与服务器通讯一般都采用上述方法,由于存在上述技术问题,因而使得电子商务应用也受到影响。

发明内容
本发明提供一种基于Web服务器的通信方法及系统,以解决现有技术中客户端与服务器间采用套接字SOCKET连接通信时受到通信端口限制的问题;进一步的,解决采用现有Web服务架构实现客户端与服务器通信存在成本高或存在实现难度大的问题。
本发明提供以下技术方案一种基于Web服务器的通信方法,包括如下步骤客户端将数据封装为HTTP数据包,并通过与Web服务器之间的套接字SOCKET连接将该HTTP数据包发送给Web服务器;所述Web服务器解析所述HTTP数据包,并调用指定的接口程序;以及由所述接口程序与对应的业务服务器建立通信连接。
根据上述方法所述接口程序在客户端发送的数据中指定。
所述接口程序进一步将Web服务器解析出的相关数据传送给所述业务服务器。
所述方法还包括步骤所述业务服务器将业务处理结果发送所述接口程序;所述接口程序按照与客户端约定的协议格式组织所述业务处理结果数据,并发送给Web服务器;Web服务器将接口程序组织后的数据封装为HTTP数据包,并通过所述SOCKET连接发送给所述客户端;以及所述客户端从HTTP数据包中解析出业务处理结果。
所述接口程序将业务处理结果数据格式化为可扩展性标记语言XML格式。
客户端采用HTTP协议的POST方式或者采用HTTP协议的GET方式发送所述HTTP数据包。
一种通信系统,包括客户端装置,将数据封装为HTTP数据包,并通过套接字SOCKET连接发送该HTTP数据包,以及通过所述SOCKET连接接收HTTP数据包并进行解析;Web服务器,通过所述SOCKET连接接收并解析所述HTTP数据包;接口装置,用于从Web服务器获取解析的数据,以及将接收到的数据传递给Web服务器;业务处理服务器,从所述接口装置接收数据并进行业务处理,以及将处理结果传递给所述接口装置。
本发明有益效果如下1、本发明基于Web服务器,使用HTTP协议和对应的端口(如80端口)与服务器通信,能够使客户端发送的数据和向客户端发送的数据很好的透过防火墙,因而,避免了采用套接字SOCKET连接时因端口限制而不能通信的问题。
2、由于客户端采用HTTP GET方法或POST方法发送数据,与XML无关,因此,其实现容易而且成本低;而业务服务器返回的数据结果可以采用与客户端之间约定的私有协议,因而灵活性和适应性强,尤其采用XML格式编码,能很好的表示大量、复杂的数据,具有良好的扩展性和可读性。
3、本发明尤其适用于电子商务网站的客户端管理工具中。例如,在一个典型的电子商务网站上,卖家可以通过客户端管理工具来管理自己的网上店铺,比如批量上传和下载商品,买家则可以用客户端软件来管理购买信息,比如发布求购信息和查看已经成交的订单。


图1为本发明实施例中的通信系统逻辑结构示意图;图2为本发明实施例中的进行通信的流程图。
具体实施例方式
参阅图1所示的通信系统,该通信系统包括客户端、Web服务器、接口程序模块和业务服务器。在本实施例中,客户端为可以远程访问Web服务器的软件模块(软件系统);Web服务器是一个可以接收和响应HTTP请求的软件模块;接口程序模块是一个包含在Web服务器中,并可以被Web服务器调用的应用程序;业务服务器为完成业务逻辑的软件模块,可由多个程序模块构成。接口程序模块为一个应用程序,可以是CGI、PHP或者ASP。由于CGI应用程序可以用C或者C++语言编码,在执行速度,效率和可控性上优于PHP和者ASP,所以CGI做接口程序是较佳的方式。
客户端与Web服务器之间建立套接字SOCKET连接,客户端将数据封装为HTTP包发送给Web服务器;Web服务器在80端口侦听HTTP连接请求,并接收到请求后调用CGI程序,由该CGI程序与业务服务器在内部网中进行通信。当该请求需要传递数据时,Web服务器将数据传递给CGI程序,由CGI程序转发给业务服务器。
相应的,业务服务器将处理结果传递给CGI程序,CGI程序会根据预先与客户端约定的协议组织结果数据,然后传递给Web服务器;Web服务器将接口程序返回的结果打包成HTTP数据包,发送给客户端。
为能够表示大量、复杂的数据,使返回结果具有良好的扩展性和可读性,一种较佳的方式是CGI程序将返回结果格式化为XML格式。
由于HTTP支持GET方法和POST方法传递参数,因此,客户端可以采用HTTP协议的POST方法发送数据,也可以采用HTTP协议的GET方法发送数据。POST方法和GET方法相比,POST方法可传递更多的参数,因此,较佳的方式是采用HTTP协议的POST方法发送数据。
图1所示的结构典型的可应用在电子商务网站的客户端管理工具中。客户端管理工具安装在用户所在终端设备上,业务服务器提供身份验证(即验证用户登录)、商品批量上传、下载和修改,商品批量上架、下架和删除等。Web服务器则在客户端和业务服务器之间传递数据(不同于一般的传递网页)。
以一个用户登录为例,客户端通过Web服务器与业务服务器通信的过程如图2所示步骤200、客户端向Web服务器发起TCP连接请求,服务器接受请求后通过80端口与客户端建立SOCKET连接。
步骤210、客户端将请求和数据封装成HTTP包并发送给Web服务器。
例如对于用户登录的请求,将登录参数和需要Web调用的业务服务器中的接口程序名字打包到HTTP数据包中,一个HTTP包内容如下POST/cgi-bin/user_login HTTP/1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,application/x-shockwave-flash,*/*Accept-Language:zh-cnContent-Type:multipart/form-data;boundary=---------------------------7d5e23b301d6Accept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.0)Host:www.mytestWeb.comContent-Length:813Connection:Keep-AliveCache-Control:no-cache-------------7d5e23b301d6..Content-Disposition:form-data;name="userid"....testuser..-----------------------------7d5e23b301d6..Content-Disposition:form-data;name="password"....mytestpassword..-----------------------------7d5e23b301d6--.
其中,“POST”表示是用HTTP协议的POST方法将数据发送给服务器,“/cgi-bin/user_login”是一个CGI程序的相对路径,表示Web服务器接收到数据后,会启动该WEB服务器虚拟目录下的相对路径为“/cgi-bin/user_login”的CGI程序,并解析出该数据包中含有用户名参数”userid”,其值为“testuser”,密码参数”password”,其值为“mytestpassword”。
虽然客户端所在网络存在网络防火墙,只要该防火墙允许在80端口通过HTTP数据包,客户端的数据即可顺利通过防火墙。
步骤220、Web服务器接收到HTTP数据包后,根据数据包的内容,启动数据包中指定的接口程序,并把解析出来的参数传递给该接口程序。
例如Web服务器接收到的HTTP数据包内容,启动该Web服务器虚拟目录下的相对路径为“/cgi-bin/user_login”的CGI程序,并解析出该数据包中含有用户名参数”userid”,其值为“testuser”,密码参数”password”,其值为“mytestpassword”。Web服务器获取这些参数后,通过环境变量将参数传递给接口程序user_login;步骤230、CGI程序与处于同一个内部网中的业务服务器进行网络通讯(UDP,TCP或其他通讯方式),将请求和参数转发给业务服务器。
例CGI程序与业务服务器建立TCP连接,将登录请求和用户名,密码发送给业务服务器。
步骤240、业务服务器根据接收到的数据进行相应的业务逻辑处理,并将结果返回给CGI程序。
例业务服务器根据接收到的用户名和密码,依据业务逻辑对该用户名和密码进行验证。
步骤250、CGI程序收到数据后,根据事先与客户端商定的接收数据协议,将结果格式化成XML格式,并将返回结果打印输出。由于支持CGI功能的Web服务器都对打印输出进行了重定向,所以CGI程序打印输出的结果就被Web服务器接收到。
例密码验证成功,CGI打印输出以下结果< xml version="1.0"encoding="gb2312" >
<theme>
<cmdinfo cmdid="login"result=”1”errinfo=" "/>
</theme>
在此,cmdid="login"表示该业务请求时用户登录,result=“1”表示登录结果是成功,errinfo=" "表示登录不成功时的错误信息,此时为空。
步骤260、Web服务器接收到CGI返回的数据后,将该数据作为HTTP数据包的消息体(BODY)部分,加上Web服务器自动生成的HTTP应答头信息,生成完整的HTTP数据包,并通过已经建好的TCP连接的80端口发送给客户端。
例加上头信息后,该HTTP数据包内容如下。
HTTP/1.1 200OKDate:Thu,01 Dec 2005 10:32:02 GMTServer:ApacheConnection:closeTransfer-Encoding:chunkedContent-Type:text/html< xml version="1.0"encoding="gb2312" >
<theme>
<cmdinfo cmdid="login"result=”1”errinfo=" "/>
</theme>
虽然客户端所在的网络环境存在防火墙,但只要该防火墙允许在80端口通过HTTP数据包,该数据即可顺利通过网络防火墙到达客户端。
步骤270、客户端从接收到的HTTP数据包中取出消息体(BODY)部分,该消息体为XML格式字符串,客户端可以解析出XML字符串中的各个字段的值,并根据客户端的业务逻辑进行相应处理、显示结果等动作。
例客户端得到HTTP数据包,取出XML字符串< xml version="1.0"encoding="gb2312" >
<theme>
<cmdinfo cmdid="login"result=“1”errinfo=" "/>
</theme>
客户端进一步解析出result=“1”字段,根据事先制订的协议,得知用户密码验证结果通过。然后客户端弹出提示对话框,提示用户登录成功。
在接受数据完毕后,客户端即可关闭与Web服务器的TCP80端口的SOCKET连接。
在本发明中,Web服务器与业务服务器间可以是在同一个内部网中,也可以是在不同的网络甚至是分布在互联网中,它们之间的通信方式包括但不限于TCP、UDP等方式。
在本发明中客户端按照HTTP POST或HTTP GET的格式要求发送数据,与XML无关,为一个明显的网络通讯过程,不同于现有Web服务架构。通过这种方式达到了与Web服务架构基本类似的效果,但实现容易,不需要额外购买Web服务软件或者自己搭建Web服务架构。
本发明应用在电子商务网站的客户端管理工具时,用户可以将商品信息(包括文字,图片等)编辑后直接进行批量上传或者上架等,其操作方便快捷,而不用按通常的网页方式对每个商品逐项逐页进行填写操作。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种基于Web服务器的通信方法,其特征在于,包括如下步骤客户端将数据封装为HTTP数据包,并通过与Web服务器之间的套接字SOCKET连接将该HTTP数据包发送给Web服务器;所述Web服务器解析所述HTTP数据包,并调用指定的接口程序;以及由所述接口程序与对应的业务服务器建立通信连接。
2.如权利要求1所述的通信方法,其特征在于,所述接口程序在客户端发送的数据中指定。
3.如权利要求1所述的通信方法,其特征在于,所述接口程序进一步将Web服务器解析出的相关数据传送给所述业务服务器。
4.如权利要求1所述的通信方法,其特征在于,该方法还包括步骤所述业务服务器将业务处理结果发送所述接口程序;所述接口程序按照与客户端约定的协议格式组织所述业务处理结果数据,并发送给Web服务器;Web服务器将接口程序组织后的数据封装为HTTP数据包,并通过所述SOCKET连接发送给所述客户端;以及所述客户端从HTTP数据包中解析出业务处理结果。
5.如权利要求4所述的通信方法,其特征在于,所述接口程序组织业务处理结果数据时将其格式化为可扩展性标记语言XML格式。
6.如权利要求4所述的通信方法,其特征在于,所述客户端在接收完数据后,关闭与Web服务器之间的SOCKET连接。
7.如权利要求1至6中的任一项所述的通信方法,其特征在于,客户端采用HTTP协议的POST方法或者采用HTTP协议的GET方法发送所述HTTP数据包。
8.一种通信系统,其特征在于,包括客户端装置,将数据封装为HTTP数据包,并通过套接字SOCKET连接发送该HTTP数据包,以及通过所述SOCKET连接接收HTTP数据包并进行解析;Web服务器,通过所述SOCKET连接接收并解析所述HTTP数据包;接口装置,用于从Web服务器获取解析的数据,以及将接收到的数据传递给Web服务器;业务处理服务器,从所述接口装置接收数据并进行业务处理,以及将处理结果传递给所述接口装置。
9.如权利要求8所述的通信系统,其特征在于,所述客户端装置采用HTTP协议的POST方法或者采用HTTP协议的GET方法发送HTTP数据包。
全文摘要
本发明公开了一种基于Web服务器的通信方法,以解决现有技术中客户端与服务器间采用套接字SOCKET连接通信时受到通信端口限制的问题;该方法由客户端将数据封装为HTTP数据包,并通过与Web服务器之间的套接字SOCKET连接将该HTTP数据包发送给Web服务器;所述Web服务器解析所述HTTP数据包,并调用指定的接口程序;以及由所述接口程序与对应的业务服务器建立通信连接。本发明还同时公开了一种通信系统。
文档编号H04L29/06GK101043522SQ20061006556
公开日2007年9月26日 申请日期2006年3月22日 优先权日2006年3月22日
发明者程才 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1