一種服務器和安卓客戶端及其網絡通信方法、裝置的制造方法
【技術領域】
[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模