一种服务器和安卓客户端及其网络通信方法、装置的制造方法
【技术领域】
[0001]本发明涉及网络通信技术领域,尤其涉及一种服务器和安卓客户端及其网络通信方法、装置。
【背景技术】
[0002]安卓(Android),是一个以Linux为基础的开源移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中Android已发布的最新版本为Android6.0.1(M)。
[0003]Android系统最初由安迪?鲁宾(Andy Rubin)等人开发制作,最初开发这个系统的目的是创建一个数码相机的先进操作系统;但是后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。于2005年8月被美国科技企业Google收购。2007年11月,Google与84家制造商、开发商及电信营运商成立开放手持设备联盟来共同研发改良Android系统,随后,Google以Apache免费开放原始码许可证的授权方式,发布了 Android的原码,让生产商推出搭载Android的智能手机,Android后来更逐渐拓展到平板电脑及其他领域上。
[0004]目前搭载Android系统的客户端与服务器的通信方式绝大多数通信方式都是使用的http方式来实现的,如图1所示,这种通信方式是Android系统原生支持的一种通信方式。当前市面上的绝大多数客户端应用(app)都是通过主动向web服务器请求数据,服务器被动应答的方式来实现的,而对于需要由web服务器主动发起的通信,也是通过客户端轮询的方式去请求相应的数据。仅采用这种方式进行通信的缺点很明显,由于http通信是由客户端主动发起请求而服务器被动应答的方式来进行通信的,所以客户端想要响应服务器发出的指令,也必须是由客户端主动去轮询服务器相应的接口去获取服务器发出的指令,这样不断的轮询去查看服务器是否有指令发出,有指令发出则响应指令,无指令发出则继续轮询查看是否有指令发出,由于大多时间是没有相应的指令发出的,因此轮询机制会导致无指令时,也会不断的去查询接口导致对带宽的一种浪费,另外轮询是有时间间隔的,间隔短了对带宽及资源的占用就比较大,间隔长了实时性不好。
[0005]为了便于叙述,以下将搭载安卓系统的客户端简称为安卓客户端。
【发明内容】
[0006]本发明期望提供一种服务器和安卓客户端及其网络通信方法、装置,能实现web服务器可以主动推送消息给安卓客户端。
[0007]本发明实施例的技术方案是这样实现的:
[0008]本发明实施例提供了一种网络通信方法,该方法包括:
[0009]建立与服务器之间的网络套接字socket通道;
[0010]通过所述socket通道接收所述服务器推送的消息;
[0011 ] 处理所述推送消息并通过所述socket通道返回应答消息。
[0012]上述方案中,所述建立与服务器之间的socket通道包括:
[0013]建立客户端网络套接字,通过该套接字发起心跳请求报文,直至收到服务器返回的心跳应答报文。
[0014]上述方案中,当所述安卓客户端需要从服务器获取数据时,所述方法还包括:
[0015]以http的方式主动发起请求。
[0016]本发明实施例还提供一种服务器的网络通信方法,该方法包括:
[0017]建立与安卓客户端之间的socket通道;
[0018]通过所述socket通道向所述安卓客户端推送的消息,直至收到所述安卓客户端返回的应答消息。
[0019]上述方案中,所述建立与安卓客户端之间的socket通道包括:
[0020]建立监听套接字,用于监听安卓客户端发来的心跳请求报文;
[0021]当收到安卓客户端的心跳报文时,返回心跳应答报文。
[0022]本发明实施例还提供一种网络通信装置,位于安卓客户端,所述装置包括:
[0023]第一socket模块,用于建立与服务器之间的网络套接字socket通道;
[0024]消息接收模块,用于通过所述socket通道接收所述服务器推送的消息;
[0025]消息处理和应答模块,用于处理所述推送消息并通过所述socket通道返回应答消息。
[0026]上述方案中,所述装置还包括:
[0027]http请求模块,用于以http的方式主动发起请求。
[0028]本发明实施例还提供一种网络通信装置,位于服务器,所述装置包括:
[0029]第二socket模块,用于建立与安卓客户端之间的socket通道;
[°03°]消息推送模块,用于通过所述socket通道向所述安卓客户端推送的消息,直至收到所述安卓客户端返回的应答消息。
[0031]本发明实施例还提供一种安卓客户端,所述客户端包括上述任意一种位于安卓客户端的网络通信装置。
[0032]本发明实施例还提供一种服务器,所述服务器包括上述位于服务器的网络通信装置。
[0033]本发明技术方案的有益效果在于:采用了http+N1的方式来实现客户端与服务器之间的通信,这种方式带来的好处就是通过把轮询方式改为推送方式来降低对资源的占用,以及随时可以通知客户端去更新信息,既保证了原有的http通信方式又降低了对资源的占用。
【附图说明】
[0034]图1为现有的网络通信方法的实现流程示意图;
[0035]图2为本发明实施例提供的安卓客户端的网络通信方法的实现流程示意图;
[0036]图3为本发明实施例提供的服务器的网络通信方法的实现流程示意图;
[0037]图4是本发明实施例提供的位于安卓客户端的网络通信装置的组成结构示意图;
[0038]图5是本发明实施例提供的位于服务器的网络通信装置的组成结构示意图;
[0039]图6为本发明实施例1的通信方式的示意图;
[0040]图7为本发明实施例1中客户端以http方式通信的流程示意图;
[0041 ]图8为本发明实施例1中客户端建立socket通道的流程示意图。
【具体实施方式】
[0042]为了更清楚地说明本发明实施例和技术方案,下面将结合附图及实施例对本发明的技术方案进行更详细的说明,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]在本发明实施例中,处于通信的双方为服务器和安卓客户端,为了满足服务器及时向安卓客户端推送信息的需要,本发明提供以下通信方式。
[0044]图2为本发明实施例提供的安卓客户端的网络通信方法的实现流程示意图,如图2所示,该安卓客户端执行以下步骤:
[0045]步骤101,建立与服务器之间的网络套接字socket通道;
[0046]步骤102,通过所述socket通道接收所述服务器推送的消息;
[0047]步骤103,处理所述推送消息并通过所述socket通道返回应答消息。
[0048]具体的,所述建立与服务器之间的socket通道包括:
[0049]建立客户端网络套接字,通过该套接字发起心跳请求报文(heartbeat reqeust),直至收到服务器返回的心跳应答报文(heartbeat response)。即只要客户端没有收到服务器返回的心跳应答报文,就持续不断的通过该套接字向服务器发送心跳请求报文。
[0050]这里,心跳报文主要用来建立通路及维护通路状态。
[0051]进一步的,当所述安卓客户端需要从服务器获取数据时,所述方法还包括:
[0052]以http的方式主动发起请求。
[0053]可以通过httpget、httppost的方式,服务器处理http请求消息,并会动给予客户端一个Reponse应答,客户端处理response应答消息。
[0054]这样,安卓客户端还安卓系统原生的这种与服务器通信的方式。
[0055]图3为本发明实施例提供的服务器的网络通信方法的实现流程示意图,如图3所示,该安卓客户端执行以下步骤:
[0056]步骤301,建立与安卓客户端之间的socket通道;
[0057]步骤302,通过所述socket通道向所述安卓客户端推送的消息,直至收到所述安卓客户端返回的应答消息。即只要服务器没有收到安卓客户端返回的应答消息,就持续通过所述socket通道向所述安卓客户端推送的消息。
[0058]具体的,所述建立与安卓客户端之间的socket通道包括:
[0059]建立监听套接字,用于监听安卓客户端发来的心跳请求报文;
[0060]当收到安卓客户端的心跳报文时,返回心跳应答报文。
[0061]使用上述实施例提供的网络通信方法,先建立服务器与安卓客户端之间的socket通道;使得服务器能够利用该socket通道向安卓客户端主动推送消息,即能保证服务器向客户端推送消息的实时性,又不占用过多的网络资源。
[0062]图4是本发明实施例提供的位于安卓客户端的网络通信装置的组成结构示意图,如图4所示,该网络通信装置包括:
[0063]第一socket模