本發(fā)明涉及通信領(lǐng)域,尤其涉及一種傳輸數(shù)據(jù)包的方法、客戶端以及服務(wù)器。
背景技術(shù):
用戶數(shù)據(jù)報(bào)協(xié)議(udp,userdatagramprotocol),是開(kāi)放式系統(tǒng)互聯(lián)(opensysteminterconnection,osi)參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。udp有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。
udp用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用udp協(xié)議。udp通信屬于無(wú)連接傳輸,協(xié)議層面不會(huì)保障數(shù)據(jù)包的安全到達(dá),所以不可避免的出現(xiàn)丟包,用戶層面的表現(xiàn)是發(fā)生卡頓,在網(wǎng)絡(luò)擁塞和信號(hào)差的情況下尤為明顯。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種傳輸數(shù)據(jù)包的方法、客戶端以及服務(wù)器,用于客戶端向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,所以,降低了數(shù)據(jù)包進(jìn)行傳輸時(shí)丟包的概率。
本發(fā)明實(shí)施例第一方面提供一種傳輸數(shù)據(jù)包的方法,可以包括:
客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;
該客戶端生成與該第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
該客戶端向服務(wù)器發(fā)送該第一目標(biāo)數(shù)據(jù)包和該第一冗余包;
該客戶端接收該服務(wù)器反饋的應(yīng)答包;
該客戶端根據(jù)該應(yīng)答包的類型標(biāo)識(shí)、該第一冗余包的類型標(biāo)識(shí)以及該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定該服務(wù)器的接收結(jié)果。
本發(fā)明實(shí)施例第二方面提供一種傳輸數(shù)據(jù)包的方法,可以包括:
服務(wù)器接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
該服務(wù)器根據(jù)該第一目標(biāo)數(shù)據(jù)包和/或該第一冗余包,生成對(duì)應(yīng)的應(yīng)答包;
該服務(wù)器向該客戶端發(fā)送該應(yīng)答包,該應(yīng)答包的類型標(biāo)識(shí)用于確定該客戶端確定該服務(wù)器的接收結(jié)果。
本發(fā)明實(shí)施例第三方面提供一種客戶端,可以包括:
第一確定模塊,用于確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;
生成模塊,用于生成與該第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
發(fā)送模塊,用于向服務(wù)器發(fā)送該第一目標(biāo)數(shù)據(jù)包和該第一冗余包;
接收模塊,用于接收該服務(wù)器反饋的應(yīng)答包;
第二確定模塊,用于根據(jù)該應(yīng)答包的類型標(biāo)識(shí)、該第一冗余包的類型標(biāo)識(shí)以及該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定該服務(wù)器的接收結(jié)果。
本發(fā)明實(shí)施例第四方面提供一種服務(wù)器,可以包括:
接收模塊,用于接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
生成模塊,用于根據(jù)該第一目標(biāo)數(shù)據(jù)包和/或該第一冗余包,生成對(duì)應(yīng)的應(yīng)答包;
發(fā)送模塊,用于向該客戶端發(fā)送該應(yīng)答包,該應(yīng)答包的類型標(biāo)識(shí)用于確定該客戶端確定該服務(wù)器的接收結(jié)果。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
在本發(fā)明實(shí)施例中,客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;該客戶端生成與該第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;該客戶端向服務(wù)器發(fā)送該第一目標(biāo)數(shù)據(jù)包和該第一冗余包;該客戶端接收該服務(wù)器反饋的應(yīng)答包;該客戶端根據(jù)該應(yīng)答包的類型標(biāo)識(shí)、該第一冗余包的類型標(biāo)識(shí)以及該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定該服務(wù)器的接收結(jié)果。若應(yīng)答包的類型標(biāo)識(shí)是與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)對(duì)應(yīng),說(shuō)明服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包,或者接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包;若應(yīng)答包的類型標(biāo)識(shí)是與第一冗余包的類型標(biāo)識(shí)對(duì)應(yīng),說(shuō)明服務(wù)器接收的是第一冗余包,第一目標(biāo)數(shù)據(jù)包丟失,但因?yàn)榈谝蝗哂喟偷谝荒繕?biāo)數(shù)據(jù)包的id相同,所以,由第一冗余包補(bǔ)上,降低了數(shù)據(jù)包傳輸?shù)膩G包概率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例技術(shù)方案,下面將對(duì)實(shí)施例和現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為現(xiàn)有技術(shù)中提供的rudp方案的模塊示意圖;
圖2為本發(fā)明實(shí)施例中所應(yīng)用的一個(gè)場(chǎng)景示意圖;
圖3為本發(fā)明實(shí)施例中所應(yīng)用的另一個(gè)場(chǎng)景示意圖;
圖4為本發(fā)明實(shí)施例中傳輸數(shù)據(jù)包的方法的一個(gè)實(shí)施例示意圖;
圖5為本發(fā)明實(shí)施例中傳輸數(shù)據(jù)包的方法的另一個(gè)實(shí)施例示意圖;
圖6為本發(fā)明實(shí)施例中客戶端的一個(gè)實(shí)施例示意圖;
圖7為本發(fā)明實(shí)施例中客戶端的另一個(gè)實(shí)施例示意圖;
圖8為本發(fā)明實(shí)施例中客戶端的另一個(gè)實(shí)施例示意圖;
圖9為本發(fā)明實(shí)施例中服務(wù)器的一個(gè)實(shí)施例示意圖;
圖10為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖;
圖11為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖;
圖12為本發(fā)明實(shí)施例中客戶端的另一個(gè)實(shí)施例示意圖;
圖13為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種傳輸數(shù)據(jù)包的方法、客戶端以及服務(wù)器,用于客戶端向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,所以,降低了數(shù)據(jù)包進(jìn)行傳輸時(shí)丟包的概率。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
udp通信屬于無(wú)連接傳輸,協(xié)議層面不會(huì)保障數(shù)據(jù)包的安全到達(dá),所以不可避免的出現(xiàn)丟包,用戶層面的表現(xiàn)是發(fā)生卡頓,在網(wǎng)絡(luò)擁塞和信號(hào)差的情況下尤為明顯。業(yè)界為減少udp丟包,一般采用在udp協(xié)議上構(gòu)建自己的可靠傳輸協(xié)議,比如可靠用戶數(shù)據(jù)報(bào)協(xié)議(reliableuserdatagramprotocol,rudp)就是在udp協(xié)議之上專門為互聯(lián)網(wǎng)協(xié)議(internetprotocol,ip)電話設(shè)計(jì)的一種介于傳輸層和應(yīng)用層之間的協(xié)議,作為一個(gè)可靠傳輸協(xié)議,rudp用于傳輸ip網(wǎng)絡(luò)間的電話信號(hào)。rudp提供一組類似傳輸控制協(xié)議(transmissioncontrolprotocol,tcp)的數(shù)據(jù)服務(wù)質(zhì)量增強(qiáng)機(jī)制,如擁塞控制的改進(jìn)、重發(fā)機(jī)制及淡化服務(wù)器算法等。但是它實(shí)現(xiàn)復(fù)雜,需要修改協(xié)議層面,且使得udp協(xié)議快速傳輸?shù)奶攸c(diǎn)有所減弱。
如圖1所示,為rudp方案的模塊示意圖,可以包括:rudp流對(duì)象封裝模塊、rudp界面模塊、rudp連接對(duì)象模塊、rudp發(fā)送緩沖模塊、rudp控制模塊ccc、rudp接收緩沖模塊、rudp通信協(xié)議定義模塊、revolver框架基礎(chǔ)base模塊。
下面對(duì)每個(gè)模塊的功能做一個(gè)簡(jiǎn)單的說(shuō)明,如下所示:
rudpstream:是對(duì)rudp流對(duì)象封裝;
rudpinterface:是rudp連接對(duì)象管理和接口控制器,實(shí)現(xiàn)對(duì)多rudp連接的管理和控制的模塊;
rudpsocket:是rudp的連接對(duì)象,實(shí)現(xiàn)握手、數(shù)據(jù)收發(fā)、連接斷開(kāi)、心跳等功能;
rudpsendbuffer:是rudp發(fā)送緩沖模塊,實(shí)現(xiàn)rudp的發(fā)送策略、疊包策略、發(fā)送速度控制、報(bào)文重發(fā)等;
rudpccc:是rudp發(fā)送窗口速率控制、發(fā)送慢啟動(dòng)控制、快速恢復(fù)和網(wǎng)絡(luò)狀態(tài)監(jiān)測(cè)模塊,實(shí)現(xiàn)對(duì)慢啟動(dòng)、快恢復(fù)、及時(shí)平衡、rtt評(píng)估等;
rudprecvbuffer:是rdup接收緩沖模塊,實(shí)現(xiàn)對(duì)rudp數(shù)據(jù)接收策略和反饋的核心控制模塊;
rudppacket:是所有rudp通信協(xié)議定義。
本發(fā)明實(shí)施例所應(yīng)用的一個(gè)場(chǎng)景示意圖如圖2所示,可以包括控制端,客戶端,服務(wù)端和數(shù)據(jù)統(tǒng)計(jì)服務(wù)器??蛻舳丝梢韵蚩刂贫苏?qǐng)求雙發(fā)配置,控制端打開(kāi)雙發(fā)配置;客戶端可以使用雙發(fā)功能向服務(wù)端發(fā)送目標(biāo)數(shù)據(jù)包和冗余包,其中,首發(fā)包和冗余包的id(identity,身份標(biāo)識(shí)符)相同,即指示的是目標(biāo)數(shù)據(jù)包和冗余包的內(nèi)容相同,但需要說(shuō)明的是,目標(biāo)數(shù)據(jù)包和冗余包的類型標(biāo)識(shí)不同。服務(wù)端收到首發(fā)包和/或冗余包之后,返回應(yīng)答包給客戶端,客戶端根據(jù)應(yīng)答包的類型標(biāo)識(shí)將數(shù)據(jù)上報(bào)至數(shù)據(jù)統(tǒng)計(jì)服務(wù)器。
本發(fā)明實(shí)施例所應(yīng)用的另一個(gè)場(chǎng)景示意圖如圖3所示,可以包括配置端,客戶端和服務(wù)端,客戶端向配置端請(qǐng)求push配置,配置端返回相應(yīng)的push配置,客戶端將push配置的信息向服務(wù)端發(fā)送,服務(wù)端根據(jù)該push配置的信息向客戶端push數(shù)據(jù)包,經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,客戶端可以向服務(wù)端發(fā)送push結(jié)束包,服務(wù)端接收該push結(jié)束包之后,應(yīng)答push結(jié)束包,并停止push數(shù)據(jù)包。
本發(fā)明技術(shù)方案通過(guò)在后臺(tái)添加udp雙發(fā)處理邏輯,精準(zhǔn)的控制udp發(fā)包,有效減少了udp通信包的丟失,降低了丟包的概率,緩解了因?yàn)閬G包造成的卡頓現(xiàn)象。
下面以實(shí)施例的方式對(duì)本發(fā)明技術(shù)方案作進(jìn)一步的說(shuō)明,如圖4所示,為本發(fā)明實(shí)施例中傳輸數(shù)據(jù)包的方法的一個(gè)實(shí)施例示意圖,包括:
401、客戶端開(kāi)啟雙發(fā)功能;
在本發(fā)明實(shí)施例中,客戶端開(kāi)啟雙發(fā)功能;具體的,可以包括:客戶端向控制端發(fā)起雙發(fā)配置請(qǐng)求;控制端接收客戶端發(fā)送的雙發(fā)配置請(qǐng)求;控制端根據(jù)雙發(fā)配置請(qǐng)求向客戶端發(fā)送雙發(fā)配置信息;客戶端接收雙發(fā)配置信息,并根據(jù)該雙發(fā)配置信息開(kāi)啟雙發(fā)功能。
402、客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;
在本發(fā)明實(shí)施例中,客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;需要說(shuō)明的是,第一目標(biāo)數(shù)據(jù)包可以是根據(jù)當(dāng)前通信過(guò)程中的實(shí)際需要確定要傳輸?shù)臄?shù)據(jù)包,也可以是一些特殊業(yè)務(wù)相關(guān)的數(shù)據(jù)包,還可以是優(yōu)先級(jí)比較高的數(shù)據(jù)包,此處不做具體限定。
403、客戶端生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
在本發(fā)明實(shí)施例中,客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包之后,客戶端生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同。
示例性的,客戶端可以根據(jù)第一目標(biāo)數(shù)據(jù)包生成對(duì)應(yīng)的第一冗余包,并給第一目標(biāo)數(shù)據(jù)包和第一冗余包添加兩個(gè)標(biāo)識(shí),(1)唯一id;(2)判別第一目標(biāo)數(shù)據(jù)包和第一冗余包的類型type標(biāo)識(shí)。例如:第一目標(biāo)數(shù)據(jù)包和第一冗余包的唯一id相同,第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)為a,第一冗余包的類型標(biāo)識(shí)為b。
404、客戶端將第一目標(biāo)數(shù)據(jù)包和第一冗余包發(fā)送至服務(wù)器;
在本發(fā)明實(shí)施例中,步驟404可以包括步驟a和步驟b,如下所示:
a、客戶端向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包;
b、服務(wù)器接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
在本發(fā)明實(shí)施例中,服務(wù)器可以以服務(wù)端為例進(jìn)行說(shuō)明,客戶端生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包之后,客戶端向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包。具體的,可以包括:客戶端通過(guò)雙發(fā)功能向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包。
客戶端向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包之后,服務(wù)器接收的情況有四種,分別為:(1)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包,(2)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包,(3)服務(wù)器接收的是第一冗余包,(4)服務(wù)器沒(méi)有接收第一目標(biāo)數(shù)據(jù)包和第一冗余包。
405、服務(wù)器根據(jù)第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,生成對(duì)應(yīng)的應(yīng)答包;
在本發(fā)明實(shí)施例中,服務(wù)器接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包之后,服務(wù)器根據(jù)第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,生成對(duì)應(yīng)的應(yīng)答包。
具體的,可以包括,如下所示:
(1)當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
(2)當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
(3)當(dāng)服務(wù)器接收的是第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一冗余包的類型標(biāo)識(shí)相對(duì)應(yīng)。
示例性的,因?yàn)榈谝荒繕?biāo)數(shù)據(jù)包的id和第一冗余包的id相同,指示第一目標(biāo)數(shù)據(jù)包和第一冗余數(shù)據(jù)包的內(nèi)容相同,所以,當(dāng)服務(wù)端接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包時(shí),說(shuō)明數(shù)據(jù)包都沒(méi)有丟失,通信正常進(jìn)行,那么第一冗余包就是多余的了,服務(wù)端可以將其丟棄掉,并生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的應(yīng)答包,該應(yīng)答包的類型標(biāo)識(shí)可以為c。當(dāng)服務(wù)端接收的是第一目標(biāo)數(shù)據(jù)包時(shí),說(shuō)明第一冗余包丟失,第一目標(biāo)數(shù)據(jù)包可以保障通信的正常進(jìn)行,服務(wù)端生成與第一冗余包對(duì)應(yīng)的應(yīng)答包,該應(yīng)答包的類型標(biāo)識(shí)可以為c。當(dāng)服務(wù)端接收的是第一冗余包時(shí),說(shuō)明第一目標(biāo)數(shù)據(jù)包在數(shù)據(jù)傳輸?shù)倪^(guò)程中丟失了,服務(wù)端可以用第一冗余包補(bǔ)上第一目標(biāo)數(shù)據(jù)包,并生成與第一冗余包對(duì)應(yīng)的應(yīng)答包,該應(yīng)答包的類型標(biāo)識(shí)可以為d。
應(yīng)理解,關(guān)于第一目標(biāo)數(shù)據(jù)包和第一冗余包各自的類型標(biāo)識(shí)與對(duì)應(yīng)的應(yīng)答包的類型標(biāo)識(shí)通常來(lái)說(shuō)是預(yù)先定義的。即若預(yù)先定義的第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)為a,與其對(duì)應(yīng)的應(yīng)答包的類型標(biāo)識(shí)為c,那么,當(dāng)客戶端接收服務(wù)端反饋的應(yīng)答包的類型標(biāo)識(shí)為c時(shí),客戶端就可以根據(jù)預(yù)定義的類型標(biāo)識(shí),確定該應(yīng)答包是對(duì)第一目標(biāo)數(shù)據(jù)包的應(yīng)答包;若預(yù)先定義的第一冗余包的類型標(biāo)識(shí)為b,與其對(duì)應(yīng)的應(yīng)答包的類型標(biāo)識(shí)為d,那么,當(dāng)客戶端接收服務(wù)端反饋的應(yīng)答包的類型標(biāo)識(shí)為d時(shí),客戶端就可以根據(jù)預(yù)定義的類型標(biāo)識(shí),確定該應(yīng)答包是對(duì)第一冗余包的應(yīng)答包。
進(jìn)一步的,需要說(shuō)明的是,在實(shí)際應(yīng)用中,第一目標(biāo)數(shù)據(jù)包和第一冗余包包括客戶端的信息,還可以包括:
服務(wù)器將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;若客戶端的信息在預(yù)置客戶端的信息列表中,則服務(wù)器根據(jù)客戶端的信息對(duì)預(yù)置客戶端的信息列表進(jìn)行更新;
或者,
服務(wù)器將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;若客戶端的信息不在預(yù)置客戶端的信息列表中,則服務(wù)器將客戶端的信息保存在預(yù)置客戶端的信息列表中。
示例性的,服務(wù)端的內(nèi)存中保存著客戶端的信息列表,里面存儲(chǔ)了客戶端的ip(internetprotocol,互聯(lián)網(wǎng)協(xié)議)、端口、存儲(chǔ)時(shí)間、序列號(hào)等配置信息;服務(wù)端收到請(qǐng)求包(第一目標(biāo)數(shù)據(jù)包和/或第一冗余包),先將該包信息與內(nèi)存中的信息列表進(jìn)行對(duì)比;若該請(qǐng)求包符合目標(biāo)數(shù)據(jù)包條件,則將type置c,組成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的應(yīng)答包返回;同時(shí)如果該客戶端信息不存在于信息列表中,則將其存入信息列表;若該記錄存在,則進(jìn)行更新操作;
若該請(qǐng)求包符合冗余包條件,則判斷服務(wù)端是否收到過(guò)相應(yīng)的目標(biāo)數(shù)據(jù)包;如收到過(guò),則將冗余包丟棄;如果沒(méi)有收到,則將type置d,組成與第一冗余包對(duì)應(yīng)的應(yīng)答包返回;同時(shí)如果該客戶端信息不存在于列表中,則將其存入列表;若該記錄存在,則進(jìn)行更新操作。
需要說(shuō)明的是,服務(wù)端通常會(huì)定期對(duì)信息列表進(jìn)行更新和清除超時(shí)記錄等操作。
406、服務(wù)器將對(duì)應(yīng)的應(yīng)答包發(fā)送至客戶端;
在本發(fā)明實(shí)施例中,步驟406可以包括步驟c和步驟d,如下所示:
c、服務(wù)器向客戶端發(fā)送應(yīng)答包,應(yīng)答包的類型標(biāo)識(shí)用于確定客戶端確定服務(wù)器的接收結(jié)果;
d、客戶端接收服務(wù)器反饋的應(yīng)答包。
407、客戶端根據(jù)應(yīng)答包的類型標(biāo)識(shí)、第一冗余包的類型標(biāo)識(shí)以及第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定服務(wù)器的接收結(jié)果。
在本發(fā)明實(shí)施例中,客戶端接收服務(wù)器反饋的應(yīng)答包之后,客戶端根據(jù)應(yīng)答包的類型標(biāo)識(shí)、第一冗余包的類型標(biāo)識(shí)以及第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定服務(wù)器的接收結(jié)果。
示例性的,客戶端收到服務(wù)端返回來(lái)的應(yīng)答包;通過(guò)應(yīng)答包的type字段判別是否是第一冗余包的回包,如:type為c則為第一目標(biāo)數(shù)據(jù)包的回包,type為d則為第一冗余包的回包;若收到type為c的應(yīng)答包,則代表第一目標(biāo)數(shù)據(jù)包在客戶端發(fā)送到服務(wù)端的上行線路沒(méi)有丟失。若收到type為d的應(yīng)答包,則代表第一目標(biāo)數(shù)據(jù)包在客戶端發(fā)送到服務(wù)端的上行線路丟失,由冗余包進(jìn)行補(bǔ)全。在實(shí)際應(yīng)用中,客戶端還可以將收到的應(yīng)答包的類型標(biāo)識(shí)結(jié)果進(jìn)行上報(bào),方便數(shù)據(jù)統(tǒng)計(jì),具體的,可以向數(shù)據(jù)統(tǒng)計(jì)服務(wù)器上報(bào)。
在本發(fā)明實(shí)施例中,通過(guò)在后臺(tái)添加udp雙發(fā)處理邏輯,比較準(zhǔn)確的控制udp發(fā)包,有效減少了udp通信包的丟失,緩解了丟包造成的卡頓現(xiàn)象??蛻舳舜_定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;該客戶端生成與該第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,該第一冗余包的id與該第一目標(biāo)數(shù)據(jù)包的id相同,且該第一冗余包的類型標(biāo)識(shí)與該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;該客戶端向服務(wù)器發(fā)送該第一目標(biāo)數(shù)據(jù)包和該第一冗余包;該客戶端接收該服務(wù)器反饋的應(yīng)答包;該客戶端根據(jù)該應(yīng)答包的類型標(biāo)識(shí)、該第一冗余包的類型標(biāo)識(shí)以及該第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定該服務(wù)器的接收結(jié)果。若應(yīng)答包的類型標(biāo)識(shí)是與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)對(duì)應(yīng),說(shuō)明服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包,或者接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包;若應(yīng)答包的類型標(biāo)識(shí)是與第一冗余包的類型標(biāo)識(shí)對(duì)應(yīng),說(shuō)明服務(wù)器接收的是第一冗余包,第一目標(biāo)數(shù)據(jù)包丟失,但因?yàn)榈谝蝗哂喟偷谝荒繕?biāo)數(shù)據(jù)包的id相同,所以,由第一冗余包補(bǔ)上,降低了數(shù)據(jù)包傳輸?shù)膩G包概率,進(jìn)而,緩解了丟包造成的卡頓現(xiàn)象。
如圖5所示,為本發(fā)明實(shí)施例中傳輸數(shù)據(jù)包的方法的另一個(gè)實(shí)施例示意圖,可以包括:
501、客戶端開(kāi)啟雙發(fā)功能;
502、客戶端確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;
503、客戶端生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
504、客戶端將第一目標(biāo)數(shù)據(jù)包和第一冗余包發(fā)送至服務(wù)器;
505、服務(wù)器根據(jù)第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,生成對(duì)應(yīng)的應(yīng)答包;
506、服務(wù)器將對(duì)應(yīng)的應(yīng)答包發(fā)送至客戶端;
507、客戶端根據(jù)應(yīng)答包的類型標(biāo)識(shí)、第一冗余包的類型標(biāo)識(shí)以及第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定服務(wù)器的接收結(jié)果;
需要說(shuō)明的是,在本發(fā)明實(shí)施例中,步驟501-507與上述圖4中所示的步驟401-407相同,此處不再贅述,而且,步驟501-507也可以在步驟511之后執(zhí)行。
508、客戶端獲取第二目標(biāo)數(shù)據(jù)包的配置信息;
在本發(fā)明實(shí)施例中,客戶端獲取第二目標(biāo)數(shù)據(jù)包的配置信息;即考慮到游戲中有些場(chǎng)景會(huì)出現(xiàn)服務(wù)器主動(dòng)pushudp包給客戶端的情況,如服務(wù)端需要客戶端被動(dòng)顯示信息、服務(wù)端主動(dòng)推送一些郵件等;客戶端在向服務(wù)端發(fā)起push配置初始定制包之前,可以先從配置端獲取到相應(yīng)的配置信息,如push包間隔,push包長(zhǎng)度等信息。為了方便說(shuō)明該需求,這里可以設(shè)定成服務(wù)端為定時(shí)push。
509、客戶端將第二目標(biāo)數(shù)據(jù)包的配置信息發(fā)送至服務(wù)器;
在本發(fā)明實(shí)施例中,步驟509可以包括步驟a和步驟b,如下所示:
a、客戶端將第二目標(biāo)數(shù)據(jù)包的配置信息向服務(wù)器發(fā)送,第二目標(biāo)數(shù)據(jù)包的配置信息用于服務(wù)器向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包;
b、服務(wù)器接收客戶端發(fā)送的第二目標(biāo)數(shù)據(jù)包的配置信息。
示例性的,客戶端可以將初始定制包的配置信息向服務(wù)器發(fā)送,初始定制包的配置信息可以包括push包間隔,push包長(zhǎng)度等信息。
510、服務(wù)器根據(jù)第二目標(biāo)數(shù)據(jù)包的配置信息第二目標(biāo)數(shù)據(jù)包發(fā)送至客戶端;
在本發(fā)明實(shí)施例中,步驟510可以包括步驟c和步驟d,如下所示:
c、服務(wù)器根據(jù)第二目標(biāo)數(shù)據(jù)包的配置信息向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包;
d、客戶端接收服務(wù)器發(fā)送的第二目標(biāo)數(shù)據(jù)包;
示例性的,服務(wù)端收到push配置初始定制包以后,知道該客戶端需要服務(wù)端定時(shí)push特定的包給它;并將該客戶端信息和相應(yīng)的配置信息添加到push信息列表中;并按照配置信息開(kāi)始定時(shí)push發(fā)包。
應(yīng)理解,服務(wù)端定時(shí)push的包可以為第二目標(biāo)數(shù)據(jù)包,也可以為第二目標(biāo)數(shù)據(jù)包和第二冗余包,第二目標(biāo)數(shù)據(jù)包和第二冗余包的id相同,第二冗余包的類型標(biāo)識(shí)與第二目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同??蛻舳私邮盏降陌赡転榈诙繕?biāo)數(shù)據(jù)包,也可能為第二冗余包,也可能是第二目標(biāo)數(shù)據(jù)包和第二冗余包。
511、客戶端經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,將結(jié)束包發(fā)送至服務(wù)器。
在本發(fā)明實(shí)施例中,步驟511可以包括步驟e和步驟f,如下所示:
e、客戶端經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,向服務(wù)器發(fā)送結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送第二目標(biāo)數(shù)據(jù)包;
f、服務(wù)器經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,接收客戶端發(fā)送的結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送數(shù)據(jù)包。
示例性的,一定時(shí)間以后,客戶端需要與服務(wù)端斷開(kāi)連接,則發(fā)送push結(jié)束包給服務(wù)端;服務(wù)端接收到該結(jié)束包,停止push,并將該條記錄從push信息列表中刪除;進(jìn)一步的,服務(wù)端同時(shí)也會(huì)定期清理push列表中超時(shí)的記錄。
在本發(fā)明實(shí)施例中,客戶端獲取第二目標(biāo)數(shù)據(jù)包的配置信息;客戶端將第二目標(biāo)數(shù)據(jù)包的配置信息發(fā)送至服務(wù)器;服務(wù)器根據(jù)第二目標(biāo)數(shù)據(jù)包的配置信息第二目標(biāo)數(shù)據(jù)包發(fā)送至客戶端;客戶端經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,將結(jié)束包發(fā)送至服務(wù)器。提供服務(wù)器主動(dòng)向客戶端push數(shù)據(jù)包的具體方案,也可以通過(guò)在后臺(tái)添加udp雙發(fā)處理邏輯,可以比較準(zhǔn)確的控制udp發(fā)包,有效減少了udp通信包的丟失,緩解了丟包造成的卡頓現(xiàn)象。
上述對(duì)本發(fā)明實(shí)施例中傳輸數(shù)據(jù)包的方法進(jìn)行了說(shuō)明,下面對(duì)本發(fā)明實(shí)施例中的客戶端進(jìn)行說(shuō)明,如圖6所示,為本發(fā)明實(shí)施例中客戶端的一個(gè)實(shí)施例示意圖,包括:
第一確定模塊601,用于確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;
生成模塊602,用于生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
發(fā)送模塊603,用于向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包;
接收模塊604,用于接收服務(wù)器反饋的應(yīng)答包;
第二確定模塊605,用于根據(jù)應(yīng)答包的類型標(biāo)識(shí)、第一冗余包的類型標(biāo)識(shí)以及第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定服務(wù)器的接收結(jié)果。
可選的,在本發(fā)明的一些實(shí)施例中,第二確定模塊605,
具體用于若應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng),則第二確定模塊確定服務(wù)器的接收結(jié)果是第一目標(biāo)數(shù)據(jù)包;
或者,
具體用于若應(yīng)答包的類型標(biāo)識(shí)與第一冗余包的類型標(biāo)識(shí)相對(duì)應(yīng),則第二確定模塊確定服務(wù)器的接收結(jié)果是第一冗余包。
可選的,在本發(fā)明的一些實(shí)施例中,在上述圖6所示的基礎(chǔ)上,如圖7所示,為本發(fā)明實(shí)施例中客戶端的另一個(gè)實(shí)施例示意圖,客戶端還包括:
開(kāi)啟模塊606,用于開(kāi)啟雙發(fā)功能;
發(fā)送模塊603,具體用于通過(guò)雙發(fā)功能向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包。
可選的,在本發(fā)明的一些實(shí)施例中,在上述圖6所示的基礎(chǔ)上,如圖8所示,為本發(fā)明實(shí)施例中客戶端的另一個(gè)實(shí)施例示意圖,客戶端還包括:
獲取模塊607,用于獲取第二目標(biāo)數(shù)據(jù)包的配置信息;
發(fā)送模塊603,還用于將第二目標(biāo)數(shù)據(jù)包的配置信息向服務(wù)器發(fā)送,第二目標(biāo)數(shù)據(jù)包的配置信息用于服務(wù)器向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包;
接收模塊604,還用于接收服務(wù)器發(fā)送的第二目標(biāo)數(shù)據(jù)包;
發(fā)送模塊603,還用于經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,向服務(wù)器發(fā)送結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送第二目標(biāo)數(shù)據(jù)包。
如圖9所示,為本發(fā)明實(shí)施例中服務(wù)器的一個(gè)實(shí)施例示意圖,包括:
接收模塊901,用于接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;
生成模塊902,用于根據(jù)第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,生成對(duì)應(yīng)的應(yīng)答包;
發(fā)送模塊903,用于向客戶端發(fā)送應(yīng)答包,應(yīng)答包的類型標(biāo)識(shí)用于確定客戶端確定服務(wù)器的接收結(jié)果。
可選的,在本發(fā)明的一些實(shí)施例中,
當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
當(dāng)服務(wù)器接收的是第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一冗余包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng)。
可選的,在本發(fā)明的一些實(shí)施例中,在上述圖9所示的基礎(chǔ)上,如圖10所示,為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖,第一目標(biāo)數(shù)據(jù)包和第一冗余包包括客戶端的信息,服務(wù)器還包括:
對(duì)比模塊904,用于將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;
更新模塊905,用于若客戶端的信息在預(yù)置客戶端的信息列表中,則更新模塊根據(jù)客戶端的信息對(duì)預(yù)置客戶端的信息列表進(jìn)行更新。
可選的,在本發(fā)明的一些實(shí)施例中,在上述圖9所示的基礎(chǔ)上,如圖11所示,為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖,第一目標(biāo)數(shù)據(jù)包和第一冗余包包括客戶端的信息,服務(wù)器還包括:
對(duì)比模塊904,用于將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;
保存模塊906,用于若客戶端的信息不在預(yù)置客戶端的信息列表中,則保存模塊將客戶端的信息保存在預(yù)置客戶端的信息列表中。
可選的,在本發(fā)明的一些實(shí)施例中,
接收模塊901,還用于接收客戶端發(fā)送的第二目標(biāo)數(shù)據(jù)包的配置信息;
發(fā)送模塊903,還用于根據(jù)第二目標(biāo)數(shù)據(jù)包的配置信息向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包;
接收模塊901,還用于經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,接收客戶端發(fā)送的結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送數(shù)據(jù)包。
該客戶端可以為包括手機(jī)、平板電腦、pda(personaldigitalassistant,個(gè)人數(shù)字助理)、pos(pointofsales,銷售客戶端)、車載電腦等任意客戶端設(shè)備,以客戶端為手機(jī)為例,如圖12所示,為本發(fā)明實(shí)施例中客戶端的一個(gè)實(shí)施例示意圖,包括:射頻(radiofrequency,rf)電路1212、存儲(chǔ)器1220、輸入單元1230、顯示單元1240、傳感器1250、音頻電路1260、無(wú)線保真(wirelessfidelity,wifi)模塊1270、處理器1280、以及電源1290等部件。本領(lǐng)域技術(shù)人員可以理解,圖12中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對(duì)手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖12對(duì)手機(jī)的各個(gè)構(gòu)成部件進(jìn)行具體的介紹:
rf電路1212可用于收發(fā)信息或通話過(guò)程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1280處理;另外,將設(shè)計(jì)上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路1212包括但不限于天線、至少一個(gè)放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(lownoiseamplifier,lna)、雙工器等。此外,rf電路1212還可以通過(guò)無(wú)線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無(wú)線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動(dòng)通訊系統(tǒng)(globalsystemofmobilecommunication,gsm)、通用分組無(wú)線服務(wù)(generalpacketradioservice,gprs)、碼分多址(codedivisionmultipleaccess,cdma)、寬帶碼分多址(widebandcodedivisionmultipleaccess,wcdma)、長(zhǎng)期演進(jìn)(longtermevolution,lte)、電子郵件、短消息服務(wù)(shortmessagingservice,sms)等。
存儲(chǔ)器1220可用于存儲(chǔ)軟件程序以及模塊,處理器1280通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器1220的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器1220可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器1220可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。
輸入單元1230可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶設(shè)置以及功能控制有關(guān)的鍵信號(hào)輸入。具體地,輸入單元1230可包括觸控面板1231以及其他輸入設(shè)備1232。觸控面板1231,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1231上或在觸控面板1231附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置??蛇x的,觸控面板1231可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來(lái)的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器1280,并能接收處理器1280發(fā)來(lái)的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板1231。除了觸控面板1231,輸入單元1230還可以包括其他輸入設(shè)備1232。具體地,其他輸入設(shè)備1232可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開(kāi)關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元1240可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機(jī)的各種菜單。顯示單元1240可包括顯示面板1241,可選的,可以采用液晶顯示器(liquidcrystaldisplay,lcd)、有機(jī)發(fā)光二極管(organiclight-emittingdiode,oled)等形式來(lái)配置顯示面板1241。進(jìn)一步的,觸控面板1231可覆蓋顯示面板1241,當(dāng)觸控面板1231檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器1280以確定觸摸事件的類型,隨后處理器1280根據(jù)觸摸事件的類型在顯示面板1241上提供相應(yīng)的視覺(jué)輸出。雖然在圖12中,觸控面板1231與顯示面板1241是作為兩個(gè)獨(dú)立的部件來(lái)實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板1231與顯示面板1241集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。
手機(jī)還可包括至少一種傳感器1250,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來(lái)調(diào)節(jié)顯示面板1241的亮度,接近傳感器可在手機(jī)移動(dòng)到耳邊時(shí),關(guān)閉顯示面板1241和/或背光。作為運(yùn)動(dòng)傳感器的一種,加速計(jì)傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于手機(jī)還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路1260、揚(yáng)聲器1261,傳聲器1262可提供用戶與手機(jī)之間的音頻接口。音頻電路1260可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器1261,由揚(yáng)聲器1261轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器1262將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路1260接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1280處理后,經(jīng)rf電路1212以發(fā)送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器1220以便進(jìn)一步處理。
wifi屬于短距離無(wú)線傳輸技術(shù),手機(jī)通過(guò)wifi模塊1270可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪問(wèn)流式媒體等,它為用戶提供了無(wú)線的寬帶互聯(lián)網(wǎng)訪問(wèn)。雖然圖12示出了wifi模塊1270,但是可以理解的是,其并不屬于手機(jī)的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器1280是手機(jī)的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器1220內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器1220內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器1280可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器1280可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器1280中。
手機(jī)還包括給各個(gè)部件供電的電源1290(比如電池),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器1280邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。
盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
在本發(fā)明實(shí)施例中,該客戶端所包括的處理器1280還具有以下功能:確定待發(fā)送的第一目標(biāo)數(shù)據(jù)包;生成與第一目標(biāo)數(shù)據(jù)包對(duì)應(yīng)的第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;根據(jù)應(yīng)答包的類型標(biāo)識(shí)、第一冗余包的類型標(biāo)識(shí)以及第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)確定服務(wù)器的接收結(jié)果。
rf電路1212還具有以下功能:向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包;接收服務(wù)器反饋的應(yīng)答包。
可選的,在本發(fā)明的一些實(shí)施例中,處理器1280具體用于:
若應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng),則第二確定模塊確定服務(wù)器的接收結(jié)果是第一目標(biāo)數(shù)據(jù)包;
或者,
若應(yīng)答包的類型標(biāo)識(shí)與第一冗余包的類型標(biāo)識(shí)相對(duì)應(yīng),則第二確定模塊確定服務(wù)器的接收結(jié)果是第一冗余包。
可選的,在本發(fā)明的一些實(shí)施例中,
處理器1280還用于:開(kāi)啟雙發(fā)功能;
rf電路1212具體用于:通過(guò)雙發(fā)功能向服務(wù)器發(fā)送第一目標(biāo)數(shù)據(jù)包和第一冗余包。
可選的,在本發(fā)明的一些實(shí)施例中,
rf電路1212還用于:獲取第二目標(biāo)數(shù)據(jù)包的配置信息;將第二目標(biāo)數(shù)據(jù)包的配置信息向服務(wù)器發(fā)送,第二目標(biāo)數(shù)據(jù)包的配置信息用于服務(wù)器向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包;接收服務(wù)器發(fā)送的第二目標(biāo)數(shù)據(jù)包;經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,向服務(wù)器發(fā)送結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送第二目標(biāo)數(shù)據(jù)包。
如圖13所示,為本發(fā)明實(shí)施例中服務(wù)器的另一個(gè)實(shí)施例示意圖,包括:
該服務(wù)器可因配置或性能不同而產(chǎn)生比較大的差異,可以包括收發(fā)器1301,一個(gè)或一個(gè)以上中央處理器(centralprocessingunits,cpu)1302(例如,一個(gè)或一個(gè)以上處理器)和存儲(chǔ)器1303,一個(gè)或一個(gè)以上存儲(chǔ)應(yīng)用程序13041或數(shù)據(jù)13042的存儲(chǔ)介質(zhì)1304(例如一個(gè)或一個(gè)以上海量存儲(chǔ)設(shè)備)。其中,存儲(chǔ)器1303和存儲(chǔ)介質(zhì)1304可以是短暫存儲(chǔ)或持久存儲(chǔ)。存儲(chǔ)在存儲(chǔ)介質(zhì)1304的程序可以包括一個(gè)或一個(gè)以上模塊(圖13中沒(méi)示出),每個(gè)模塊可以包括對(duì)服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1302可以設(shè)置為與存儲(chǔ)介質(zhì)1304通信,在服務(wù)器上執(zhí)行存儲(chǔ)介質(zhì)1304中的一系列指令操作。
在本發(fā)明實(shí)施例中,收發(fā)器1301還具有以下功能:接收客戶端發(fā)送的第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,第一冗余包的id與第一目標(biāo)數(shù)據(jù)包的id相同,且第一冗余包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)不同;向客戶端發(fā)送應(yīng)答包,應(yīng)答包的類型標(biāo)識(shí)用于確定客戶端確定服務(wù)器的接收結(jié)果;
中央處理器1302還具有以下功能:根據(jù)第一目標(biāo)數(shù)據(jù)包和/或第一冗余包,生成對(duì)應(yīng)的應(yīng)答包。
可選的,在本發(fā)明的一些實(shí)施例中,
當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
當(dāng)服務(wù)器接收的是第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一冗余包的類型標(biāo)識(shí)相對(duì)應(yīng);
或者,
當(dāng)服務(wù)器接收的是第一目標(biāo)數(shù)據(jù)包和第一冗余包時(shí),應(yīng)答包的類型標(biāo)識(shí)與第一目標(biāo)數(shù)據(jù)包的類型標(biāo)識(shí)相對(duì)應(yīng)。
可選的,在本發(fā)明的一些實(shí)施例中,
中央處理器1302還具有以下功能:將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;若客戶端的信息在預(yù)置客戶端的信息列表中,則中央處理器根據(jù)客戶端的信息對(duì)預(yù)置客戶端的信息列表進(jìn)行更新;
或者,
中央處理器1302還具有以下功能:將客戶端的信息與預(yù)置客戶端的信息列表進(jìn)行對(duì)比;若客戶端的信息不在預(yù)置客戶端的信息列表中,則中央處理器將客戶端的信息保存在預(yù)置客戶端的信息列表中。
可選的,在本發(fā)明的一些實(shí)施例中,
收發(fā)器1301還具有以下功能:接收客戶端發(fā)送的第二目標(biāo)數(shù)據(jù)包的配置信息;經(jīng)過(guò)預(yù)置時(shí)長(zhǎng)后,接收客戶端發(fā)送的結(jié)束包,結(jié)束包用于指示服務(wù)器停止發(fā)送數(shù)據(jù)包;
中央處理器1302還具有以下功能:根據(jù)第二目標(biāo)數(shù)據(jù)包的配置信息向客戶端發(fā)送第二目標(biāo)數(shù)據(jù)包。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。