欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)包傳輸系統(tǒng)及方法與流程

文檔序號(hào):11264000閱讀:289來(lái)源:國(guó)知局
數(shù)據(jù)包傳輸系統(tǒng)及方法與流程

本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)包傳輸系統(tǒng)及方法。



背景技術(shù):

隨著移動(dòng)通信技術(shù)的發(fā)展,越來(lái)越多的移動(dòng)終端如智能手機(jī)具有雙卡雙通的功能,使得用戶在實(shí)現(xiàn)語(yǔ)音業(yè)務(wù)的待機(jī)同時(shí),能建立數(shù)據(jù)業(yè)務(wù)連接。移動(dòng)終端通常具有兩個(gè)用戶識(shí)別卡以及分別與所述兩個(gè)用戶識(shí)別卡連接的調(diào)制解調(diào)器,兩個(gè)用戶識(shí)別卡全開時(shí),一個(gè)用戶識(shí)別卡(sim1)可以使用4g(the4thgenerationmobilecommunicationtechnology,第四代移動(dòng)通信技術(shù)),例如lte(longtermevolution,長(zhǎng)期演進(jìn)技術(shù))網(wǎng)絡(luò),另一個(gè)用戶識(shí)別卡(sim2)僅能使用2g(2-generationwirelesstelephonetechnology,第二代手機(jī)通信技術(shù)規(guī)格)或3g(3rdgeneration,第三代移動(dòng)通信技術(shù))網(wǎng)絡(luò),sim2不能上4g的原因主要是:移動(dòng)終端只有一套射頻,兩張卡使用該套射頻是分時(shí)復(fù)用的關(guān)系,并不能同時(shí)占用,由于兩張卡全開時(shí),只有一張卡可以使用4g網(wǎng)絡(luò),另一張卡只能使用2g或3g網(wǎng)絡(luò),導(dǎo)致移動(dòng)終端中數(shù)據(jù)傳輸?shù)男瘦^低。

因此,為了使移動(dòng)終端可以支持雙lte,以提高數(shù)據(jù)傳輸效率,移動(dòng)終端可與外接設(shè)備連接(該外接設(shè)備中設(shè)置有調(diào)制解調(diào)器),以實(shí)現(xiàn)雙lte通信功能。但是,目前移動(dòng)終端和外接設(shè)備進(jìn)行數(shù)據(jù)包傳輸過程中,如果移動(dòng)終端中的用戶識(shí)別卡是電信卡,由于電信卡一般都大于移動(dòng)終端和外接設(shè)備之間數(shù)據(jù)傳輸?shù)呐R時(shí)緩沖區(qū)buffer的容量值,因此buffer無(wú)法緩存一個(gè)完整的數(shù)據(jù)包,若是直接進(jìn)行數(shù)據(jù)傳輸,容易導(dǎo)致移動(dòng)終端死機(jī)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的主要目的在于提出一種數(shù)據(jù)包傳輸系統(tǒng)及方法,旨在解決現(xiàn)有的數(shù)據(jù)包傳輸方式,容易導(dǎo)致移動(dòng)終端死機(jī)的技術(shù)問題。

為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種數(shù)據(jù)包傳輸系統(tǒng),所述數(shù)據(jù)包傳輸系統(tǒng)包括移動(dòng)終端,以及通過預(yù)設(shè)接口與所述移動(dòng)終端連接的外接設(shè)備,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器、第一調(diào)制解調(diào)器、第一射頻模塊,以及與所述第一調(diào)制解調(diào)器連接的實(shí)體用戶識(shí)別卡,所述外接設(shè)備包括第二應(yīng)用處理器、第二調(diào)制解調(diào)器和第二射頻模塊;

所述第一應(yīng)用處理器,用于通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

可選地,所述第一應(yīng)用處理器,還用于判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器添加的壓縮標(biāo)識(shí);若能提取出壓縮標(biāo)識(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。

可選地,所述第一應(yīng)用處理器,還用于對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。

可選地,所述第一應(yīng)用處理器對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮具體包括:

所述第一應(yīng)用處理器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;

確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;

在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;

通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

可選地,所述第一應(yīng)用處理器,還用于確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;

若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;

采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)包傳輸方法,應(yīng)用于移動(dòng)終端以及通過預(yù)設(shè)接口與移動(dòng)終端連接的外接設(shè)備,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器、第一調(diào)制解調(diào)器、第一射頻模塊,以及與所述第一調(diào)制解調(diào)器連接的實(shí)體用戶識(shí)別卡,所述外接設(shè)備包括第二應(yīng)用處理器、第二調(diào)制解調(diào)器和第二射頻模塊,所述方法包括:

第一應(yīng)用處理器通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;

對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;

將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟之前,所述數(shù)據(jù)包傳輸方法還包括:

所述第一應(yīng)用處理器判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器添加的壓縮標(biāo)識(shí);

若能提取出壓縮標(biāo)識(shí),則執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。

可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟之前,所述數(shù)據(jù)包傳輸方法還包括:

所述第一應(yīng)用處理器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;

基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;

在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。

可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟包括:

所述第一應(yīng)用處理器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;

確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;

在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;

通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

可選地,所述第一應(yīng)用處理器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本的步驟之后,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟還包括:

確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;

若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;

采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

本發(fā)明提出的數(shù)據(jù)包傳輸系統(tǒng)及方法,所述數(shù)據(jù)包傳輸系統(tǒng)包括移動(dòng)終端,以及通過預(yù)設(shè)接口與所述移動(dòng)終端連接的外接設(shè)備,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器、第一調(diào)制解調(diào)器、第一射頻模塊,以及與所述第一調(diào)制解調(diào)器連接的實(shí)體用戶識(shí)別卡,所述外接設(shè)備包括第二應(yīng)用處理器、第二調(diào)制解調(diào)器和第二射頻模塊,第一應(yīng)用處理器通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,再對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,最終將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過程中移動(dòng)終端死機(jī)的情況。

附圖說明

圖1為本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)的示意圖;

圖2為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的一種通訊連接的實(shí)體示意圖;

圖3為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的一種硬件結(jié)構(gòu)示意圖;

圖4為本發(fā)明第一應(yīng)用處理器和第二應(yīng)用處理器之間的交互示意圖;

圖5為本發(fā)明數(shù)據(jù)包傳輸方法第一實(shí)施例的流程示意圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做說明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互任意結(jié)合。

為了對(duì)本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對(duì)照附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式。

圖1是本發(fā)明一實(shí)施例的lte(longtermevolution,長(zhǎng)期演進(jìn))網(wǎng)絡(luò)架構(gòu)的示意圖。本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)包括:一個(gè)或多個(gè)移動(dòng)終端(userequipment,ue)100、外接設(shè)備200、e-utran(evolvedumtsterrestrialradioaccessnetwork,演進(jìn)的umts陸地?zé)o線接入網(wǎng))(圖中未標(biāo)號(hào))、演進(jìn)分組核心(epc)(圖中未標(biāo)號(hào))、歸屬訂戶服務(wù)器(hss)107、網(wǎng)絡(luò)(例如,因特網(wǎng))(圖中未標(biāo)號(hào))以及電路交換系統(tǒng)(圖中未標(biāo)號(hào))。

e-utran包括演進(jìn)b節(jié)點(diǎn)(enodeb)101和其它enodeb102。enodeb101提供朝向移動(dòng)終端100的用戶面和控制面的協(xié)議終接。enodeb101可經(jīng)由x2接口連接到其他enodeb。enodeb101也可稱為基站、基收發(fā)機(jī)站、無(wú)線電基站、無(wú)線電收發(fā)機(jī)、收發(fā)機(jī)功能、基本服務(wù)集、擴(kuò)展服務(wù)集、或其他某個(gè)合適的術(shù)語(yǔ)。enodeb101為移動(dòng)終端100提供去往epc的接入點(diǎn)。

enodeb101通過s1接口連接到epc。epc包括移動(dòng)管理實(shí)體(eem)104、其他移動(dòng)管理實(shí)體106、服務(wù)網(wǎng)關(guān)103,以及分組數(shù)據(jù)網(wǎng)絡(luò)(pdn)網(wǎng)關(guān)105。移動(dòng)管理實(shí)體104是處理移動(dòng)終端100與epc之間的信令的控制節(jié)點(diǎn)。移動(dòng)管理實(shí)體104提供承載和連接管理。所有用戶ip分組通過服務(wù)網(wǎng)關(guān)103來(lái)傳遞,服務(wù)網(wǎng)關(guān)103自身連接到pdn網(wǎng)關(guān)105。pdn網(wǎng)關(guān)105提供ueip地址分配以及其他功能。pdn網(wǎng)關(guān)105連接到網(wǎng)絡(luò),例如,因特網(wǎng)。

電路交換系統(tǒng)包括交互解決方案模塊(iws)108、移動(dòng)交換中心(msc)109、基站110和移動(dòng)站111。在一個(gè)方面,電路交換系統(tǒng)可以通過iws和mme(mobilitymanagemententity,移動(dòng)管理實(shí)體)與eps(evolvedpacketsystem,演進(jìn)的分組系統(tǒng))進(jìn)行通信。

移動(dòng)終端100通過預(yù)設(shè)接口,如usb(universalserialbus,通用串行總線)數(shù)據(jù)線300與外接設(shè)備200通訊連接。

圖2為本發(fā)明移動(dòng)終端100和外接設(shè)備200通訊連接的實(shí)體示意圖。

如圖2所示,移動(dòng)終端100通過usb數(shù)據(jù)線300與外接設(shè)備200通訊連接,其中,所述移動(dòng)終端包括但不限于手機(jī)、pc(personalcomputer,個(gè)人電腦)或pad(personaldigitalassistant,個(gè)人數(shù)字助理),所述外接設(shè)備200可選為無(wú)線上網(wǎng)卡或數(shù)據(jù)卡。

圖3為本發(fā)明移動(dòng)終端100和外接設(shè)備200通訊連接的結(jié)構(gòu)示意圖。

本發(fā)明實(shí)施例的移動(dòng)終端100通過usb數(shù)據(jù)線300與外接設(shè)備200通訊連接,基于移動(dòng)終端100和外接設(shè)備200通訊連接的基礎(chǔ),移動(dòng)終端100可支持雙lte。具體地:

移動(dòng)終端100包括第一處理芯片001,以及與所述第一處理芯片001連接的第一射頻模塊12,其中,第一處理芯片001包括內(nèi)嵌有虛擬用戶識(shí)別卡10a的第一應(yīng)用處理器(applicationprocessor,用ap1表示)10、與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11(modem1)、rpm(resourcepowermanager,資源電源管理器)15。

其中,虛擬用戶識(shí)別卡10a包括存儲(chǔ)模塊和虛擬片內(nèi)操作系統(tǒng)(virtualchipoperatingsystem,vcos),該存儲(chǔ)模塊可為efs(encryptingfilesystem,加密文件系統(tǒng)),存儲(chǔ)模塊用于存儲(chǔ)虛擬用戶識(shí)別卡10a的鑒權(quán)數(shù)據(jù)。所述實(shí)體用戶識(shí)別卡14為sim(subscriberidentitymodule,用戶識(shí)別模塊)卡。

外接設(shè)備200包括第二處理芯片002,以及與所述第二處理芯片002連接的第二射頻模塊22,其中,第二處理芯片002包括第二應(yīng)用處理器(用ap2表示)20和第二調(diào)制解調(diào)器(modem2)21。

第一應(yīng)用處理器10和第二應(yīng)用處理器20的內(nèi)部框架包括應(yīng)用層、框架層等,可處理復(fù)雜的邏輯操作以及進(jìn)行任務(wù)分配等。在一個(gè)實(shí)施例中,應(yīng)用處理器指android操作系統(tǒng),以及基于android操作系統(tǒng)的各種apk(androidpackage,安卓安裝包)。在本發(fā)明的實(shí)施例中,第一應(yīng)用處理器10和第二應(yīng)用處理器20通過usb數(shù)據(jù)線300實(shí)現(xiàn)通訊連接,為用戶提供交互接口,將用戶輸入的操作指令(例如,用戶通過用戶界面輸入的有關(guān)啟動(dòng)視頻通話的操作指令)傳輸給第一調(diào)制解調(diào)器11或第二調(diào)制解調(diào)器21,以實(shí)現(xiàn)兩個(gè)應(yīng)用處理器之間數(shù)據(jù)的定義與傳遞,例如,進(jìn)行兩個(gè)應(yīng)用處理器的休眠、喚醒、同步的控制、開關(guān)機(jī)時(shí)芯片啟動(dòng)順序的控制等。

應(yīng)當(dāng)理解的是,在本發(fā)明實(shí)施例中,usb數(shù)據(jù)線300復(fù)用出三條數(shù)據(jù)通道,分別用于第一應(yīng)用處理器10和第二應(yīng)用處理器20之間用戶數(shù)據(jù)、控制信令數(shù)據(jù)和sim卡鑒權(quán)數(shù)據(jù)的交互,即第一應(yīng)用處理器10和第二應(yīng)用處理器20通過usb數(shù)據(jù)線300傳輸?shù)臄?shù)據(jù)包括上述三種數(shù)據(jù)。其中,用戶數(shù)據(jù)包括上網(wǎng)產(chǎn)生的數(shù)據(jù),圖片和聊天信息數(shù)據(jù);控制信令數(shù)據(jù)包括開關(guān)機(jī)的控制數(shù)據(jù),開關(guān)飛行模式的控制數(shù)據(jù),顯示狀態(tài)信號(hào)的控制數(shù)據(jù),sim卡鑒權(quán)數(shù)據(jù)包括但不限于imsi(internationalmobilesubscriberidentificationnumber,國(guó)際移動(dòng)用戶識(shí)別碼)、ki(keyidentifier,鑒權(quán)密鑰)等等。

本實(shí)施例中,第一應(yīng)用處理器10和第二應(yīng)用處理器20通過otg(on-the-go)技術(shù)進(jìn)行數(shù)據(jù)交互。通過otg技術(shù),移動(dòng)終端100中的第一調(diào)制解調(diào)器11可通過虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的sim卡參數(shù)來(lái)接入enodeb101,外接設(shè)備中的第二調(diào)制解調(diào)器21也可通過實(shí)體用戶識(shí)別卡14或虛擬用戶識(shí)別卡10a中的sim卡參數(shù)來(lái)接入enodeb101,所述sim卡參數(shù)包括但不限于sim卡鑒權(quán)數(shù)據(jù)。其中,usb接口的buffer存在于第一應(yīng)用處理器10和第二應(yīng)用處理器20的兩端,用buffer1和buffer2表示。需要說明的是,buffer1和buffer2對(duì)應(yīng)著同一個(gè)物理地址,通過該物理地址,可控制buffer1和buffer2容量值和狀態(tài)的同步變化。

由于buffer1和buffer2對(duì)應(yīng)著同一個(gè)物理地址,因此第一應(yīng)用處理器10將提取的數(shù)據(jù)包緩存至buffer1時(shí),數(shù)據(jù)包通過該uart發(fā)送至buffer2中緩存,第二應(yīng)用處理器20在buffer2中檢測(cè)到該數(shù)據(jù)包時(shí),即可獲取到該數(shù)據(jù)包,以實(shí)現(xiàn)數(shù)據(jù)包的傳輸。

第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21包含各種網(wǎng)絡(luò)交互的網(wǎng)絡(luò)制式的協(xié)議棧,協(xié)議棧包含lte(longtermevolution,長(zhǎng)期演進(jìn))/wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)/gsm(globalsystemformobilecommunication,全球移動(dòng)通信系統(tǒng))/td-scdma(timedivision-synchronouscodedivisionmultipleaccess,同步時(shí)分碼分多址)/cdma(codedivisionmultipleaccess,碼分多址)/edge(enhanceddatarateforgsmevolution,強(qiáng)型數(shù)據(jù)速率gsm演進(jìn)技術(shù))等通訊標(biāo)準(zhǔn)里邊規(guī)定的協(xié)議代碼。移動(dòng)終端100通過協(xié)議與運(yùn)營(yíng)商網(wǎng)絡(luò)進(jìn)行交互,即進(jìn)行數(shù)據(jù)流量上網(wǎng)、volte(voiceoverlte)打電話或者cs(circuitswitched,電路交換)域打電話。第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21還用于對(duì)sim卡的管控等等。

在本發(fā)明實(shí)施例中,第一射頻模塊12用于將移動(dòng)終端100傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給移動(dòng)終端100。第二射頻模塊22用于將外接設(shè)備200傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給外接設(shè)備200。

第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線接入技術(shù)可以包括lte、gsm、gprs(generalpacketradioservice,通用分組無(wú)線服務(wù))、cdma、edge、wlan(wirelesslocalareanetworks,無(wú)線局域網(wǎng))、cdma-2000、td-scdma、wcdma、wifi(wirelessfidelity,無(wú)線保真)等等。

移動(dòng)終端100中的實(shí)體用戶識(shí)別卡14與第一調(diào)制解調(diào)器11連接,虛擬用戶識(shí)別卡10a以軟件的形式嵌在第一應(yīng)用處理器10中,虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14存儲(chǔ)不同的無(wú)線通信標(biāo)準(zhǔn)相關(guān)聯(lián)用戶信息。應(yīng)當(dāng)理解,目前的移動(dòng)終端只有一套射頻,移動(dòng)終端內(nèi)部的兩個(gè)用戶識(shí)別卡使用該套射頻是分時(shí)復(fù)用的關(guān)系,并不能同時(shí)占用。例如,在兩張用戶識(shí)別卡全開時(shí),一張卡可以處理gsm通話,另一張卡只能處理4g網(wǎng)絡(luò)信息,具體哪個(gè)用戶識(shí)別卡執(zhí)行何種網(wǎng)絡(luò),不做限定。因此目前的射頻雙卡分時(shí)復(fù)用這種架構(gòu)僅做到了lte+gsm(即一張用戶識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為lte,另一張用戶識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為gsm)。

也就是說,現(xiàn)有的移動(dòng)終端100雖然可以支持雙用戶識(shí)別卡,但是移動(dòng)終端100在注冊(cè)網(wǎng)絡(luò)的情況下,兩個(gè)用戶識(shí)別卡支持的是不同技術(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò),一個(gè)支持2g或3g,另一個(gè)支持4g,會(huì)使得移動(dòng)終端100使用過程中,上網(wǎng)流量速度較慢,因此本發(fā)明中,移動(dòng)終端100通過usb數(shù)據(jù)線300連接外接設(shè)備200,由于外接設(shè)備200包括第二射頻模塊22,且第二射頻模塊22支持4g網(wǎng)絡(luò),因此本發(fā)明中,移動(dòng)終端100可通過usb線300與外接設(shè)備200交互,從而使得移動(dòng)終端100具備雙lte功能。

在本實(shí)施例中,數(shù)據(jù)包傳輸系統(tǒng)包括移動(dòng)終端100和外接設(shè)備200,移動(dòng)終端100通過外接設(shè)備200具備雙lte功能的實(shí)現(xiàn)過程可為:①實(shí)體用戶識(shí)別卡14通過第二調(diào)制解調(diào)器21支持lte,具體過程為:第一調(diào)制解調(diào)器11將實(shí)體用戶識(shí)別卡14中需要訪問lte網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送給第一應(yīng)用處理器10,第一應(yīng)用處理器10將所接收的數(shù)據(jù)通過usb發(fā)送給外接設(shè)備200的第二應(yīng)用處理器20,第二應(yīng)用處理器20將所接收的數(shù)據(jù)發(fā)送給第二調(diào)制解調(diào)器21,由第二調(diào)制解調(diào)器21轉(zhuǎn)發(fā)給第二射頻模塊22,第二射頻模塊22將所接收的數(shù)據(jù)通過lte網(wǎng)絡(luò)發(fā)送出去;而虛擬用戶識(shí)別卡10a通過第一調(diào)制解調(diào)器11支持lte,以實(shí)現(xiàn)移動(dòng)終端100可支持雙lte。②虛擬用戶識(shí)別卡10a通過第二調(diào)制解調(diào)器21支持lte,具體過程為:第一應(yīng)用處理器10將虛擬用戶識(shí)別卡10a中需要訪問lte網(wǎng)絡(luò)的數(shù)據(jù)通過usb發(fā)送給外接設(shè)備200的第二應(yīng)用處理器20,第二應(yīng)用處理器20將所接收的數(shù)據(jù)發(fā)送給第二調(diào)制解調(diào)器21,由第二調(diào)制解調(diào)器21轉(zhuǎn)發(fā)給第二射頻模塊22,第二射頻模塊22將所接收的數(shù)據(jù)通過lte網(wǎng)絡(luò)發(fā)送出去;而實(shí)體用戶識(shí)別卡14通過第一調(diào)制解調(diào)器11支持lte,以實(shí)現(xiàn)移動(dòng)終端100可支持雙lte。

在本發(fā)明實(shí)施例中,虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14用于提供移動(dòng)通信業(yè)務(wù)(cs語(yǔ)音業(yè)務(wù)、ps數(shù)據(jù)業(yè)務(wù)和ps語(yǔ)音業(yè)務(wù))所需的相關(guān)數(shù)據(jù),并在其內(nèi)部存儲(chǔ)用戶信息、短消息、執(zhí)行鑒權(quán)算法和產(chǎn)生加密密匙等。

實(shí)體用戶識(shí)別卡14與移動(dòng)終端100交互時(shí),移動(dòng)終端100檢測(cè)該實(shí)體用戶識(shí)別卡14存在與否的信號(hào)只在開機(jī)瞬時(shí)產(chǎn)生,當(dāng)開機(jī)檢測(cè)不到實(shí)體用戶識(shí)別卡14存在時(shí),移動(dòng)終端100將提示“插入用戶識(shí)別卡”。移動(dòng)終端100開機(jī)之后,移動(dòng)終端100和實(shí)體用戶識(shí)別卡14之間28秒通信一次,完成一些固定的通信檢查(例如,用戶識(shí)別卡是否在位等)。

需要說明的是,當(dāng)虛擬用戶識(shí)別卡10a需要進(jìn)行網(wǎng)絡(luò)注冊(cè)時(shí),通過開啟的無(wú)線保真(wifi)網(wǎng)絡(luò)發(fā)送包含業(yè)務(wù)菜單數(shù)據(jù)的下載請(qǐng)求至虛擬用戶識(shí)別卡10a對(duì)應(yīng)的云端服務(wù)器,以從云端服務(wù)器獲取虛擬用戶識(shí)別卡10a的數(shù)據(jù)信息。當(dāng)獲取到虛擬用戶識(shí)別卡10a的數(shù)據(jù)信息時(shí),將數(shù)據(jù)信息寫入虛擬用戶識(shí)別卡10a的存儲(chǔ)模塊中,以實(shí)現(xiàn)虛擬用戶識(shí)別卡10a的網(wǎng)絡(luò)注冊(cè)。其中,數(shù)據(jù)信息可以包括:imsi、ki(keyidentifier,鑒權(quán)密鑰)、iccid(integratedcircuitcardidentifier)、pin(個(gè)人標(biāo)識(shí)號(hào),personalidentificationnumber)、puk(pinunlockingkey)。可以理解的是,云端服務(wù)器中存儲(chǔ)了各個(gè)運(yùn)營(yíng)商的卡號(hào)資源。

在本發(fā)明的實(shí)施例中,虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14承載信息,并且根據(jù)外界請(qǐng)求返回對(duì)應(yīng)卡參數(shù),以及對(duì)網(wǎng)絡(luò)進(jìn)行鑒權(quán)運(yùn)算,第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線接入技術(shù)為lte。當(dāng)移動(dòng)終端100通過usb數(shù)據(jù)線300與外接設(shè)備200連接時(shí),虛擬用戶識(shí)別卡10a可通過外接設(shè)備200中的第二調(diào)制解調(diào)器21支持lte,而實(shí)體用戶識(shí)別卡14通過第一調(diào)制解調(diào)器11支持lte;或者虛擬用戶識(shí)別卡10a可通過外接設(shè)備200中的第一調(diào)制解調(diào)器11支持lte,而實(shí)體用戶識(shí)別卡14通過第二調(diào)制解調(diào)器21支持lte,以實(shí)現(xiàn)移動(dòng)終端100連接外接設(shè)備200情況下可支持雙lte。

移動(dòng)終端100中的rpm15用于管控各種資源,包括時(shí)鐘資源、總線資源、pmic(powermanagementic,電源管理集成電路,即各個(gè)芯片的電壓)、ddr(內(nèi)存分配),以及管理芯片的休眠喚醒的中斷和應(yīng)用處理器喚醒的截止時(shí)間。移動(dòng)終端100的各個(gè)子系統(tǒng),在需要資源時(shí),向rpm15申請(qǐng)資源,各個(gè)子系統(tǒng)分別包括第一應(yīng)用處理器10,第一調(diào)制解調(diào)器11、pronto(wifi/藍(lán)牙、nfc(nearfieldcommunication,近場(chǎng)通信)等)、lpass(lowpoweraudiosubsystem,低功耗音頻子系統(tǒng)),rpm15用來(lái)決定移動(dòng)終端100系統(tǒng)的休眠狀態(tài),具體是,rpm15基于各個(gè)子系統(tǒng)的投票機(jī)制實(shí)現(xiàn),當(dāng)各個(gè)子系統(tǒng)都投休眠票時(shí),rpm15才可以使移動(dòng)終端100整個(gè)系統(tǒng)進(jìn)行休眠。

在移動(dòng)終端100的整個(gè)系統(tǒng)休眠之后,若是要重新啟動(dòng)運(yùn)行,需要喚醒第一應(yīng)用處理器10以進(jìn)行數(shù)據(jù)的傳輸交互。

在移動(dòng)終端100和外接設(shè)備200通過usb數(shù)據(jù)線300通訊連接的情況下,喚醒方式包括三種:

1、第一應(yīng)用處理器10接收到控制信令數(shù)據(jù)時(shí),通過usb數(shù)據(jù)線300傳送探測(cè)包給第二應(yīng)用處理器20,以喚醒第二應(yīng)用處理器20。

2、外接設(shè)備200的第二調(diào)制解調(diào)器21接收到用戶數(shù)據(jù)時(shí),喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過usb數(shù)據(jù)線300傳送探測(cè)包給第一應(yīng)用處理器10,以喚醒第一應(yīng)用處理器10。

3、第二調(diào)制解調(diào)器21周期性查找尋呼請(qǐng)求,以主動(dòng)激活自己,若接收到尋呼請(qǐng)求,喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過usb數(shù)據(jù)線300發(fā)送探測(cè)包給第一應(yīng)用處理器10,以喚醒第二應(yīng)用處理器20。

此外,第二調(diào)制解調(diào)器21還可以定期喚醒自己,以在移動(dòng)終端100進(jìn)行位置更新時(shí),跟基站進(jìn)行握手交互,此時(shí)不需要喚醒第一應(yīng)用處理器10。

需要說明的是,傳輸?shù)臄?shù)據(jù)包為用戶數(shù)據(jù)、控制信令數(shù)據(jù)或用戶識(shí)別卡數(shù)據(jù)即sim卡數(shù)據(jù)時(shí),三種數(shù)據(jù)都在應(yīng)用處理器之間傳輸。

本實(shí)施例中,sim卡包括移動(dòng)卡、聯(lián)通卡和電信卡,其中,移動(dòng)卡和聯(lián)通卡是指采用3gpp標(biāo)準(zhǔn)協(xié)議進(jìn)行通訊的電話卡,3gpp標(biāo)準(zhǔn)協(xié)議規(guī)定了電話卡傳輸數(shù)據(jù)包的容量不能超出一定值,該值設(shè)置為512個(gè)字節(jié);而電信卡是指采用3gpp2標(biāo)準(zhǔn)協(xié)議的電話卡,gpp2標(biāo)準(zhǔn)協(xié)議對(duì)電信卡傳輸?shù)臄?shù)據(jù)包的容量未做限制,電信卡傳輸?shù)臄?shù)據(jù)包的容量一般會(huì)超出512字節(jié)。其中,移動(dòng)卡是由中國(guó)移動(dòng)(運(yùn)營(yíng)商)向用戶提供的sim卡,聯(lián)通卡是由中國(guó)聯(lián)通(運(yùn)營(yíng)商)向用戶提供的sim卡,電信卡是由中國(guó)電信(運(yùn)營(yíng)商)向用戶提供的sim卡。

由于現(xiàn)有的buffer的容量一般都不超過512個(gè)字節(jié)。因此,當(dāng)移動(dòng)終端100中的虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14都是移動(dòng)卡或者是聯(lián)通卡時(shí),由于移動(dòng)卡或者是聯(lián)通卡收發(fā)數(shù)據(jù)包的數(shù)據(jù)容量小于512個(gè)字節(jié)的,因此,第一應(yīng)用處理器10接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14獲取到的數(shù)據(jù)包也是小于512個(gè)字節(jié),相應(yīng)的,存儲(chǔ)到buffer的數(shù)據(jù)包也是小于512個(gè)字節(jié)的,因此,數(shù)據(jù)包可完整的存儲(chǔ)到buffer中,后續(xù),第二應(yīng)用處理器20也可以取出一個(gè)完整的數(shù)據(jù)包。

但是,由于電信卡一般大于512字節(jié),因此,在第一應(yīng)用處理器10和第二應(yīng)用處理器20的數(shù)據(jù)交互過程中,若是第一應(yīng)用處理器10中連接的是電信卡,會(huì)出現(xiàn)這樣的情況:

以圖3為例,在虛擬用戶識(shí)別卡10a和實(shí)體用戶識(shí)別卡14為電信卡的情況下,移動(dòng)終端100第一應(yīng)用處理器10通過第一調(diào)制解調(diào)器11從虛擬用戶識(shí)別卡10a中或?qū)嶓w用戶識(shí)別卡14提取出一個(gè)數(shù)據(jù)包,由于該數(shù)據(jù)包大于512字節(jié),而buffer一次性只能緩存不超過512字節(jié)的數(shù)據(jù)包,這種情況下,會(huì)由于無(wú)法轉(zhuǎn)發(fā)大數(shù)據(jù)包導(dǎo)致移動(dòng)終端的系統(tǒng)死機(jī)。

若是要解決這個(gè)問題,按照常規(guī)的思路,不會(huì)將該數(shù)據(jù)包一次性進(jìn)行轉(zhuǎn)發(fā),而是拆分成多個(gè)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),但是對(duì)于第二應(yīng)用處理器20而言,當(dāng)從buffer檢測(cè)到有數(shù)據(jù)包時(shí),認(rèn)為該數(shù)據(jù)包是完整的數(shù)據(jù)包,此時(shí)第二應(yīng)用處理器20直接從buffer獲取該數(shù)據(jù)包,并將該數(shù)據(jù)包轉(zhuǎn)發(fā)至基站。很明顯,這種情況下,轉(zhuǎn)發(fā)的數(shù)據(jù)包是不完整的數(shù)據(jù)包。

基于上述lte網(wǎng)絡(luò)的架構(gòu)圖、以及移動(dòng)終端100和外接設(shè)備200通訊連接的結(jié)構(gòu)示意圖,提出本發(fā)明的各個(gè)實(shí)施例。

參照?qǐng)D3,本實(shí)施例提出一種數(shù)據(jù)包傳輸系統(tǒng),所述數(shù)據(jù)包傳輸系統(tǒng)包括移動(dòng)終端100,以及通過預(yù)設(shè)接口與所述移動(dòng)終端100連接的外接設(shè)備200,所述移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡10a的第一應(yīng)用處理器10、第一調(diào)制解調(diào)器11、第一射頻模塊12,以及與所述第一調(diào)制解調(diào)器11連接的實(shí)體用戶識(shí)別卡14,所述外接設(shè)備200包括第二應(yīng)用處理器20、第二調(diào)制解調(diào)器21和第二射頻模塊22;

所述第一應(yīng)用處理器10,用于通過預(yù)設(shè)接口接收第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二應(yīng)用處理器20從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

在本實(shí)施例中,所述第一應(yīng)用處理器10通過預(yù)設(shè)接口接收第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,后續(xù)也是通過所述預(yù)設(shè)接口將數(shù)據(jù)包反饋至所述第二應(yīng)用處理器20。所述預(yù)設(shè)接口為usb接口。

其中,當(dāng)?shù)诙幚硇酒?02的第二調(diào)制解調(diào)器21通過第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求發(fā)送至第二處理芯片002的第二應(yīng)用處理器20中,當(dāng)?shù)诙?yīng)用處理器20接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),先通過usb數(shù)據(jù)線300將數(shù)據(jù)包獲取請(qǐng)求傳送至移動(dòng)終端100的第一應(yīng)用處理器10中;第一應(yīng)用處理器10接收到該數(shù)據(jù)包獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求傳送至移動(dòng)終端100的第一調(diào)制解調(diào)器11中,由第一調(diào)制解調(diào)器11根據(jù)該數(shù)據(jù)包獲取請(qǐng)求從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中獲取數(shù)據(jù)包;第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包之后,將數(shù)據(jù)包傳輸至第一應(yīng)用處理器10中;第一應(yīng)用處理器10獲取到數(shù)據(jù)包之后,為了保證傳輸?shù)臄?shù)據(jù)不會(huì)大于usb的buffer,先對(duì)獲取的數(shù)據(jù)包進(jìn)行壓縮,得到壓縮后的數(shù)據(jù)包;再通過usb將壓縮后的數(shù)據(jù)包傳送至第二應(yīng)用處理器20;第二應(yīng)用處理器20在接收到數(shù)據(jù)包后,再將數(shù)據(jù)包傳送至第二射頻模塊22,由第二射頻模塊22將數(shù)據(jù)包上傳至基站,以完成數(shù)據(jù)的傳輸。

具體地,所述第一應(yīng)用處理器10,還用于通過第一調(diào)制解調(diào)器11向虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求,由所述片內(nèi)操作系統(tǒng)在虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的文件存儲(chǔ)模塊中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,并反饋至所述第一調(diào)制解調(diào)器11;

所述第一應(yīng)用處理器10,還用于通過第一調(diào)制解調(diào)器11接收片內(nèi)操作系統(tǒng)反饋的數(shù)據(jù)。

在本實(shí)施例中,需要說明的是,虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的數(shù)據(jù)包存儲(chǔ)在文件存儲(chǔ)模塊中,當(dāng)?shù)谝徽{(diào)制解調(diào)器11要獲取虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的數(shù)據(jù)包時(shí),第一調(diào)制解調(diào)器11不會(huì)直接與虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的文件存儲(chǔ)模塊交互,而是先向虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求即request,然后虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14的cos操作系統(tǒng)基于該request在文件存儲(chǔ)模塊中獲取數(shù)據(jù)包,然后將獲取的數(shù)據(jù)包再傳輸給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11只要接收cos操作系統(tǒng)反饋的數(shù)據(jù)包即可,后續(xù)第一應(yīng)用處理器10在第一調(diào)制解調(diào)器11中獲取數(shù)據(jù)包即可實(shí)現(xiàn)數(shù)據(jù)包的獲取過程。

可以理解,由于第一調(diào)制解調(diào)器11無(wú)法在虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的文件存儲(chǔ)模塊直接提取數(shù)據(jù)包,因此通過與虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14的cos操作系統(tǒng)進(jìn)行交互,以實(shí)現(xiàn)數(shù)據(jù)包的提取,保證后續(xù)的數(shù)據(jù)傳輸過程正常運(yùn)行。

當(dāng)?shù)谝粦?yīng)用處理器10從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中提取出數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包之后,再對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,本實(shí)施例中,第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮時(shí),可以采用加密壓縮的方式進(jìn)行數(shù)據(jù)包的壓縮,也可以直接采用明文進(jìn)行壓縮。由于傳輸?shù)膕im卡網(wǎng)絡(luò)鑒權(quán)數(shù)據(jù)量比較小,為了減少加密解密等操作而導(dǎo)致數(shù)據(jù)傳輸效率低,本發(fā)明實(shí)施例優(yōu)選采用明文壓縮的方式對(duì)數(shù)據(jù)包進(jìn)行壓縮,即本方案中采用的壓縮算法以簡(jiǎn)單高效為主,具體采用的壓縮算法和壓縮過程在下文實(shí)施例中詳述。

第一應(yīng)用處理器10對(duì)數(shù)據(jù)包壓縮之后,即可將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口usb的buffer中,以供第二應(yīng)用處理器20從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

本實(shí)施例中需要說明的是,buffer存在于usb接口的兩端,即usb接口的兩端分別設(shè)置有buffer1和buffer2。當(dāng)?shù)诙?yīng)用處理器20將數(shù)據(jù)包獲取請(qǐng)求通過usb接口發(fā)送給第一應(yīng)用處理器10時(shí),第一應(yīng)用處理器10通過第一調(diào)制解調(diào)器11從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14提取出數(shù)據(jù)包之后,先將提取的數(shù)據(jù)包存儲(chǔ)到buffer1中,以通過usb傳輸至buffer2中,第二應(yīng)用處理器20再?gòu)腷uffer2中獲取數(shù)據(jù)包。

本實(shí)施例提出的移動(dòng)終端,所述第一應(yīng)用處理器通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,然后對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過程中移動(dòng)終端死機(jī)的情況。

進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸系統(tǒng)第二實(shí)施例。

數(shù)據(jù)包傳輸系統(tǒng)第二實(shí)施例與數(shù)據(jù)包傳輸系統(tǒng)第一實(shí)施例的區(qū)別在于,所述第一應(yīng)用處理器10,還用于判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器添加的壓縮標(biāo)識(shí);若能提取出壓縮標(biāo)識(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。

在本實(shí)施例中,當(dāng)?shù)诙?yīng)用處理器20向第一應(yīng)用處理器10發(fā)送數(shù)據(jù)包獲取請(qǐng)求(request)之前,為了防止傳輸?shù)臄?shù)據(jù)包過大,第二應(yīng)用處理器20發(fā)送request時(shí),先確定是否需要在request中添加壓縮標(biāo)識(shí),若需要,則先在request中添加一個(gè)壓縮標(biāo)識(shí),如添加字段01,以告知第一應(yīng)用處理器10對(duì)待發(fā)送的數(shù)據(jù)包進(jìn)行壓縮。

需要說明的是,由于待傳輸?shù)臄?shù)據(jù)是根據(jù)通訊協(xié)議標(biāo)準(zhǔn)確定的,因此,第二應(yīng)用處理器20可以得知即將獲取的數(shù)據(jù)包的數(shù)據(jù)類型和數(shù)據(jù)大小,那么,當(dāng)?shù)诙?yīng)用處理器20發(fā)送request之前,先判斷當(dāng)前待獲取的數(shù)據(jù)包的大小,若待獲取的數(shù)據(jù)包的大小超出了buffer的容量值,則第二應(yīng)用處理器20在request中添加壓縮標(biāo)識(shí),以告知第一應(yīng)用處理器10對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,若第二應(yīng)用處理器20判斷待獲取的數(shù)據(jù)包的大小未超出buffer的容量值,則直接發(fā)送request即可,無(wú)需添加壓縮標(biāo)識(shí)。

在本實(shí)施例中,第二應(yīng)用處理器20發(fā)送request之前,對(duì)待獲取的數(shù)據(jù)包的大小進(jìn)行識(shí)別,僅在待獲取的數(shù)據(jù)包超出buffer的容量值時(shí),才在request添加壓縮標(biāo)識(shí),避免了所有的數(shù)據(jù)包獲取請(qǐng)求都添加壓縮標(biāo)識(shí),縮短了數(shù)據(jù)包傳輸?shù)臅r(shí)間,提高了數(shù)據(jù)包傳輸?shù)男省?/p>

當(dāng)?shù)谝粦?yīng)用處理器10通過預(yù)設(shè)接口(usb)接收第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先對(duì)所述數(shù)據(jù)包獲取請(qǐng)求進(jìn)行解析,以確定能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器20添加的壓縮標(biāo)識(shí),若在所述數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),此時(shí),所述第一應(yīng)用處理器10即可對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,后續(xù)再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer1中,并通過usb傳輸至buffer2中,以供第二應(yīng)用處理器20從所述buffer2中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

在本實(shí)施例中,數(shù)據(jù)包傳輸過程是發(fā)生第一應(yīng)用處理器10和第二應(yīng)用處理器20喚醒之后,那么當(dāng)?shù)谝粦?yīng)用處理器10和第二應(yīng)用處理器20喚醒之后,若第二應(yīng)用處理器20通過第二調(diào)制解調(diào)器21連接的第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,執(zhí)行以下操作:

判斷:先確定待獲取的數(shù)據(jù)包的大小,以判斷是否需要添加壓縮標(biāo)識(shí);

決策:若待獲取的數(shù)據(jù)包超過usb的buffer的容量,則在發(fā)送數(shù)據(jù)包獲取請(qǐng)求之前,在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí);

發(fā)送:在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí)之后,發(fā)送數(shù)據(jù)包獲取請(qǐng)求。

第一應(yīng)用處理器10通過usb接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),執(zhí)行以下操作:

提取:確定能否從數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),若能,則提取出壓縮標(biāo)識(shí);

壓縮:基于提取的壓縮標(biāo)識(shí),對(duì)通過第一調(diào)制解調(diào)器11從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14提取的數(shù)據(jù)包進(jìn)行壓縮;

反饋:反饋壓縮的數(shù)據(jù)包。

最終,第二應(yīng)用處理器20通過usb接收第一應(yīng)用處理器10反饋的數(shù)據(jù)包,以完成數(shù)據(jù)包傳輸過程。上述的操作過程,可參照?qǐng)D4。

需要說明的是,第二應(yīng)用處理器20發(fā)送的是數(shù)據(jù)包獲取請(qǐng)求,由于數(shù)據(jù)包獲取請(qǐng)求一般都小于buffer的容量,因此可不對(duì)數(shù)據(jù)包獲取請(qǐng)求進(jìn)行壓縮。

在本實(shí)施例中,第一應(yīng)用處理器10在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器20添加的壓縮標(biāo)識(shí),若能提取出壓縮標(biāo)識(shí),才對(duì)數(shù)據(jù)包進(jìn)行壓縮,防止數(shù)據(jù)包小于buffer的容量時(shí)也進(jìn)行壓縮,以防止系統(tǒng)資源的浪費(fèi),并且節(jié)省了數(shù)據(jù)包傳輸?shù)臅r(shí)間,從而提高了數(shù)據(jù)包傳輸?shù)男省?/p>

進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸系統(tǒng)第三實(shí)施例。

數(shù)據(jù)包傳輸系統(tǒng)第三實(shí)施例與數(shù)據(jù)包傳輸系統(tǒng)第一實(shí)施例的區(qū)別在于,所述第一應(yīng)用處理器10,還用于對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。

在本實(shí)施例中,所述第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先對(duì)從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中提取的數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,然后從包頭中獲取數(shù)據(jù)包的長(zhǎng)度,以確定該數(shù)據(jù)包的大小。其中,數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱為type(類型),length(長(zhǎng)度),value(值),t字段表示數(shù)據(jù)包的類型,l字段表示數(shù)據(jù)包的長(zhǎng)度、v字段用于存放數(shù)據(jù)包的內(nèi)容。

本實(shí)施例中,該數(shù)據(jù)包的生成過程為:傳輸層獲取到數(shù)據(jù)包對(duì)應(yīng)的原始數(shù)據(jù),并為原始數(shù)據(jù)添加傳輸層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括傳輸層數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度,得到初始數(shù)據(jù)包,并將初始數(shù)據(jù)包傳輸至傳輸復(fù)用層。當(dāng)傳輸復(fù)用層接收到初始數(shù)據(jù)包后,為初始化數(shù)據(jù)包添加傳輸復(fù)用層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括復(fù)用層的數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度,得到數(shù)據(jù)包,并調(diào)用物理驅(qū)動(dòng)層的發(fā)送接口將該數(shù)據(jù)包發(fā)送給物理層。后續(xù),第一應(yīng)用處理器10對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,就是從物理層(物理傳輸介質(zhì))之上的物理驅(qū)動(dòng)層檢測(cè)數(shù)據(jù)包的包頭,以解析得到數(shù)據(jù)包的大小(長(zhǎng)度)。

當(dāng)?shù)谝粦?yīng)用處理器10確定數(shù)據(jù)包的長(zhǎng)度后,再判斷該數(shù)據(jù)包的長(zhǎng)度是否大于預(yù)設(shè)閾值(即buffer的容量值)。在本實(shí)施例中,所述預(yù)設(shè)閾值可選為512字節(jié),在其它實(shí)施例中,也可以將所述預(yù)設(shè)閾值設(shè)置為其它長(zhǎng)度,在此不再限定。當(dāng)數(shù)據(jù)包的長(zhǎng)度大于所述預(yù)設(shè)閾值時(shí),為了防止數(shù)據(jù)包傳輸導(dǎo)致終端死機(jī),所述第一應(yīng)用處理器10對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。可以理解,若提取的數(shù)據(jù)包的長(zhǎng)度小于預(yù)設(shè)閾值,所述第一應(yīng)用處理器10可直接通過usb接口發(fā)送該數(shù)據(jù)包至第二應(yīng)用處理器20。

在本實(shí)施例中,在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,所述第一應(yīng)用處理器10對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,再確定所述數(shù)據(jù)包的長(zhǎng)度,僅在數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),才對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,從而提高了數(shù)據(jù)包壓縮的準(zhǔn)確性。

進(jìn)一步地,基于第一至第三實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸系統(tǒng)第四實(shí)施例。

數(shù)據(jù)包傳輸系統(tǒng)第四實(shí)施例與數(shù)據(jù)包傳輸系統(tǒng)第一至第三實(shí)施例的區(qū)別在于,所述第一應(yīng)用處理器10對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮具體包括:

所述第一應(yīng)用處理器10獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;

確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;

在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;

通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

在本實(shí)施例中,所述第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮,具體地,先獲取數(shù)據(jù)包對(duì)應(yīng)的源文本,然后確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段,再?gòu)念A(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度,最終通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為字典算法,字典算法是最為簡(jiǎn)單的壓縮算法之一。該字典算法把文本中出現(xiàn)頻率大于預(yù)設(shè)一定值的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,當(dāng)前的字典列表中:

00=chinese

01=people

02=china

若當(dāng)期數(shù)據(jù)包中的源文本為:iamachinesepeople,iamfromchina。那么,采用該字典算法,壓縮后的編碼為:iama0001,iamfrom02。

可以理解,壓縮編碼后的長(zhǎng)度顯著縮小,這樣的編碼專有名詞或者固定組合較多的內(nèi)容中,壓縮效率十分顯著,將預(yù)定的文本內(nèi)容用字典中預(yù)定的編碼映射替代,解壓縮的時(shí)候執(zhí)行反向還原即可。

進(jìn)一步地,所述第一應(yīng)用處理器10,還用于依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段;

將所述任兩個(gè)字符段的高四位進(jìn)行刪除,并將所述任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為固定位長(zhǎng)算法(fixedbitlengthpacking),這種算法是把文本用需要的最少的位來(lái)進(jìn)行壓縮編碼。比如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8。轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,00110100,01010110,01111000。所以原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。

可以理解,通過這種組合方式,將需要用到的位數(shù)進(jìn)行了縮小,使得數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反響拆分添加組合即可。

進(jìn)一步地,所述第一應(yīng)用處理器10,還用于對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法,這種壓縮編碼是一種變長(zhǎng)的編碼,rle根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。具體地:

變體1:重復(fù)次數(shù)+字符

文本字符串:aaabbbccccdddd,編碼后得到:3a3b4c4d;通過該變體算法,即可將數(shù)據(jù)包終端文本字符串進(jìn)行壓縮。

變體2:特殊字符+重復(fù)次數(shù)+字符

文本字符串:aaaaabccccbccc,編碼后得到:bb5abb4cbb3c;其中,該編碼串的最開始說明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說,文本串字符采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)3個(gè)c,因此,需要在3個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。

為了更清楚理解該方案,舉另一個(gè)例子:文本字符串仍然為:aaaaabccccbccc,若當(dāng)前編碼串的最開始說明特殊字符為d,那么,編碼后得到:dd5abd4cbd3c。

變體3:

把文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù)。如果第7位沒有被置位,那么剩下7位就是后面沒有被壓縮的字符的數(shù)量。

例如:文本字符串:aaaaabcdefff,編碼后得到:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將文本字符串分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)快對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒有被置位為1,那么剩下7位是后面沒有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。

需要說明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一窮舉。

進(jìn)一步地,所述第一應(yīng)用處理器10,還用于確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;

若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;

采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段,若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及字符段的長(zhǎng)度,采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。

lz77算法的壓縮原理:如果文件中有兩塊字符串內(nèi)容相同的話,那么只要知道前一塊字符串內(nèi)容的位置和大小,我們就可以確定后一塊字符串的內(nèi)容。所以我們可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。

為更好理解,下面我們來(lái)舉一個(gè)例子:

有一個(gè)文件的內(nèi)容如下:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。

我們使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。

(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。

從上述例子中可看出,由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。

具體地,lz77算法使用滑動(dòng)窗口尋找匹配串:

即lz77算法使用"滑動(dòng)窗口"的方法,來(lái)尋找文件中的相同部分,文件中相同部分即匹配串。首先,對(duì)匹配串做一個(gè)說明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在文本文件中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。具體地:

lz77從文件的開始處開始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就象在陽(yáng)光下,飛機(jī)的影子滑過大地一樣。對(duì)于文件中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。

窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開始的串。如果當(dāng)前處理字節(jié)開始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開始的串在窗口中沒有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。

處理文件中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒有滑到文件上,這時(shí)窗口中沒有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入文件,最后整個(gè)窗口滑入文件,然后整個(gè)窗口在文件上向后滑動(dòng),直到整個(gè)文件結(jié)束。

需要說明的是,匹配串的長(zhǎng)度有所限制,即本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。

為更好理解本實(shí)施例,舉例如下:

假設(shè)文本字符串為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。

編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的文本字符串第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入文本字符串,那么字符串首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;

編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。

編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。

編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的文本字符串進(jìn)行比對(duì),剩下的文本字符串為aaac,通過該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷文本字符串后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。

編碼的第五步:輸出<4,3>之后,該文本字符串中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。

使用lz77算法進(jìn)行壓縮和解壓縮

為了在解壓縮時(shí),可以區(qū)分“沒有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。

實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。

實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話,那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話,不但沒有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。

壓縮:

從文件的開始到文件結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開始的串在窗口中沒有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。

解壓縮:

從文件開始到文件結(jié)束,每次先讀一位標(biāo)志位,通過這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。

綜上所述,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。

當(dāng)?shù)谝粦?yīng)用處理器10通過上述任一個(gè)壓縮算法對(duì)數(shù)據(jù)包進(jìn)行壓縮之后,再將壓縮后的數(shù)據(jù)包存儲(chǔ)到buffer中進(jìn)行轉(zhuǎn)發(fā)。后續(xù),第二應(yīng)用處理器20即可從buffer中提取出壓縮的數(shù)據(jù)包,并對(duì)提取的壓縮數(shù)據(jù)包進(jìn)行解壓,其中,解壓的方式也包括兩種:當(dāng)?shù)谝粦?yīng)用處理器10是加密壓縮時(shí),所述第二應(yīng)用處理器20采用對(duì)應(yīng)的密文進(jìn)行解壓,當(dāng)?shù)谝粦?yīng)用處理器10是明文壓縮時(shí),所述第二應(yīng)用處理器20即可直接進(jìn)行解壓,以得到解壓后的數(shù)據(jù)包。由于本實(shí)施例中的各個(gè)壓縮算法主要是明文算法,因此,解壓的方式也是明文解壓。

可以理解,本方案中,在移動(dòng)終端100中的電信卡傳輸?shù)臄?shù)據(jù)包較大時(shí),第二應(yīng)用處理器20在request中添加標(biāo)識(shí),使第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮,以改變數(shù)據(jù)包的期望值,后續(xù)緩存到buffer的數(shù)據(jù)包就不會(huì)超出buffer的容量值,那么,避免了大數(shù)據(jù)包傳輸導(dǎo)致死機(jī)的問題,同時(shí)數(shù)據(jù)包不會(huì)被拆分成多個(gè)數(shù)據(jù)包,避免了數(shù)據(jù)包轉(zhuǎn)發(fā)不完整的情況。

本發(fā)明進(jìn)一步提供一種數(shù)據(jù)包傳輸方法。

參照?qǐng)D5,圖5為本發(fā)明數(shù)據(jù)包傳輸方法較佳實(shí)施例的流程示意圖。

本實(shí)施例提出一種數(shù)據(jù)包傳輸方法,在本實(shí)施例中,提供了數(shù)據(jù)包傳輸方法的實(shí)施例,需要說明的是,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

本發(fā)明中,數(shù)據(jù)包傳輸方法應(yīng)用于移動(dòng)終端100,以及通過預(yù)設(shè)接口與所述移動(dòng)終端100連接的外接設(shè)備200,所述移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡10a的第一應(yīng)用處理器10、第一調(diào)制解調(diào)器11、第一射頻模塊12,以及與所述第一調(diào)制解調(diào)器11連接的實(shí)體用戶識(shí)別卡14,所述外接設(shè)備200包括第二應(yīng)用處理器20、第二調(diào)制解調(diào)器21和第二射頻模塊22,所述方法包括:

步驟s10,第一應(yīng)用處理器通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;

步驟s20,對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;

步驟s30,將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

在本實(shí)施例中,所述第一應(yīng)用處理器10通過預(yù)設(shè)接口接收第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,后續(xù)也是通過所述預(yù)設(shè)接口將數(shù)據(jù)包反饋至所述第二應(yīng)用處理器20。所述預(yù)設(shè)接口為usb接口。

其中,當(dāng)?shù)诙幚硇酒?02的第二調(diào)制解調(diào)器21通過第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求發(fā)送至第二處理芯片002的第二應(yīng)用處理器20中,當(dāng)?shù)诙?yīng)用處理器20接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),先通過usb數(shù)據(jù)線300將數(shù)據(jù)包獲取請(qǐng)求傳送至移動(dòng)終端100的第一應(yīng)用處理器10中;第一應(yīng)用處理器10接收到該數(shù)據(jù)包獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求傳送至移動(dòng)終端100的第一調(diào)制解調(diào)器11中,由第一調(diào)制解調(diào)器11根據(jù)該數(shù)據(jù)包獲取請(qǐng)求從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中獲取數(shù)據(jù)包;第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包之后,將數(shù)據(jù)包傳輸至第一應(yīng)用處理器10中;第一應(yīng)用處理器10獲取到數(shù)據(jù)包之后,為了保證傳輸?shù)臄?shù)據(jù)不會(huì)大于usb的buffer,先對(duì)獲取的數(shù)據(jù)包進(jìn)行壓縮,得到壓縮后的數(shù)據(jù)包;再通過usb將壓縮后的數(shù)據(jù)包傳送至第二應(yīng)用處理器20;第二應(yīng)用處理器20在接收到數(shù)據(jù)包后,再將數(shù)據(jù)包傳送至第二射頻模塊22,由第二射頻模塊22將數(shù)據(jù)包上傳至基站,以完成數(shù)據(jù)的傳輸。

具體地,所述步驟s10包括:

步驟a,所述第一應(yīng)用處理器通過第一調(diào)制解調(diào)器向虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中的片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求,由所述片內(nèi)操作系統(tǒng)在虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中的文件存儲(chǔ)模塊中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,并反饋至所述第一調(diào)制解調(diào)器;

步驟b,所述第一應(yīng)用處理器通過第一調(diào)制解調(diào)器接收片內(nèi)操作系統(tǒng)反饋的數(shù)據(jù)包。

在本實(shí)施例中,需要說明的是,虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的數(shù)據(jù)包存儲(chǔ)在文件存儲(chǔ)模塊中,當(dāng)?shù)谝徽{(diào)制解調(diào)器11要獲取虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的數(shù)據(jù)包時(shí),第一調(diào)制解調(diào)器11不會(huì)直接與虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的文件存儲(chǔ)模塊交互,而是先向虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求即request,然后虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14的cos操作系統(tǒng)基于該request在文件存儲(chǔ)模塊中獲取數(shù)據(jù)包,然后將獲取的數(shù)據(jù)包再傳輸給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11只要接收cos操作系統(tǒng)反饋的數(shù)據(jù)包即可,后續(xù)第一應(yīng)用處理器10在第一調(diào)制解調(diào)器11中獲取數(shù)據(jù)包即可實(shí)現(xiàn)數(shù)據(jù)包的獲取過程。

可以理解,由于第一調(diào)制解調(diào)器11無(wú)法在虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中的文件存儲(chǔ)模塊直接提取數(shù)據(jù)包,因此通過與虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14的cos操作系統(tǒng)進(jìn)行交互,以實(shí)現(xiàn)數(shù)據(jù)包的提取,保證后續(xù)的數(shù)據(jù)傳輸過程正常運(yùn)行。

當(dāng)?shù)谝粦?yīng)用處理器10從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中提取出數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包之后,再對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,本實(shí)施例中,第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮時(shí),可以采用加密壓縮的方式進(jìn)行數(shù)據(jù)包的壓縮,也可以直接采用明文進(jìn)行壓縮。由于傳輸?shù)膕im卡網(wǎng)絡(luò)鑒權(quán)數(shù)據(jù)量比較小,為了減少加密解密等操作而導(dǎo)致數(shù)據(jù)傳輸效率低,本發(fā)明實(shí)施例優(yōu)選采用明文壓縮的方式對(duì)數(shù)據(jù)包進(jìn)行壓縮,即本方案中采用的壓縮算法以簡(jiǎn)單高效為主,具體采用的壓縮算法和壓縮過程在下文實(shí)施例中詳述。

第一應(yīng)用處理器10對(duì)數(shù)據(jù)包壓縮之后,即可將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口usb的buffer中,以供第二應(yīng)用處理器20從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

本實(shí)施例中需要說明的是,buffer存在于usb接口的兩端,即usb接口的兩端分別設(shè)置有buffer1和buffer2。當(dāng)?shù)诙?yīng)用處理器20將數(shù)據(jù)包獲取請(qǐng)求通過usb接口發(fā)送給第一應(yīng)用處理器10時(shí),第一應(yīng)用處理器10通過第一調(diào)制解調(diào)器11從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14提取出數(shù)據(jù)包之后,先將提取的數(shù)據(jù)包存儲(chǔ)到buffer1中,以通過usb傳輸至buffer2,第二應(yīng)用處理器20再?gòu)腷uffer2中獲取數(shù)據(jù)包。

本實(shí)施例提出的數(shù)據(jù)包傳輸方法,所述第一應(yīng)用處理器通過預(yù)設(shè)接口接收第二應(yīng)用處理器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶識(shí)別卡或?qū)嶓w用戶識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,然后對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二應(yīng)用處理器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過程中移動(dòng)終端死機(jī)的情況。

進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第二實(shí)施例。

數(shù)據(jù)包傳輸方法第二實(shí)施例與數(shù)據(jù)包傳輸方法第一實(shí)施例的區(qū)別在于,所述步驟s20之前,所述數(shù)據(jù)包傳輸方法還包括:

所述第一應(yīng)用處理器判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器添加的壓縮標(biāo)識(shí);

若能提取出壓縮標(biāo)識(shí),則執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。

在本實(shí)施例中,當(dāng)?shù)诙?yīng)用處理器20向第一應(yīng)用處理器10發(fā)送數(shù)據(jù)包獲取請(qǐng)求(request)之前,為了防止傳輸?shù)臄?shù)據(jù)包過大,第二應(yīng)用處理器20發(fā)送request時(shí),先確定是否需要在request中添加壓縮標(biāo)識(shí),若需要,則先在request中添加一個(gè)壓縮標(biāo)識(shí),如添加字段01,以告知第一應(yīng)用處理器10對(duì)待發(fā)送的數(shù)據(jù)包進(jìn)行壓縮。

需要說明的是,由于待傳輸?shù)臄?shù)據(jù)是根據(jù)通訊協(xié)議標(biāo)準(zhǔn)確定的,因此,第二應(yīng)用處理器20可以得知即將獲取的數(shù)據(jù)包的數(shù)據(jù)類型和數(shù)據(jù)大小,那么,當(dāng)?shù)诙?yīng)用處理器20發(fā)送request之前,先判斷當(dāng)前待獲取的數(shù)據(jù)包的大小,若待獲取的數(shù)據(jù)包的大小超出了buffer的容量值,則第二應(yīng)用處理器20在request中添加壓縮標(biāo)識(shí),以告知第一應(yīng)用處理器10對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,若第二應(yīng)用處理器20判斷待獲取的數(shù)據(jù)包的大小未超出buffer的容量值,則直接發(fā)送request即可,無(wú)需添加壓縮標(biāo)識(shí)。

在本實(shí)施例中,第二應(yīng)用處理器20發(fā)送request之前,對(duì)待獲取的數(shù)據(jù)包的大小進(jìn)行識(shí)別,僅在待獲取的數(shù)據(jù)包超出buffer的容量值時(shí),才在request添加壓縮標(biāo)識(shí),避免了所有的數(shù)據(jù)包獲取請(qǐng)求都添加壓縮標(biāo)識(shí),縮短了數(shù)據(jù)包傳輸?shù)臅r(shí)間,提高了數(shù)據(jù)包傳輸?shù)男省?/p>

當(dāng)?shù)谝粦?yīng)用處理器10通過預(yù)設(shè)接口(usb)接收第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先對(duì)所述數(shù)據(jù)包獲取請(qǐng)求進(jìn)行解析,以確定能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二應(yīng)用處理器20添加的壓縮標(biāo)識(shí),若在所述數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),此時(shí),所述第一應(yīng)用處理器10即可對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,后續(xù)再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer1中,并通過usb傳輸至buffer2中,以供第二應(yīng)用處理器20從所述buffer2中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。

在本實(shí)施例中,數(shù)據(jù)包傳輸過程是發(fā)生第一應(yīng)用處理器10和第二應(yīng)用處理器20喚醒之后,那么當(dāng)?shù)谝粦?yīng)用處理器10和第二應(yīng)用處理器20喚醒之后,若第二應(yīng)用處理器20通過第二調(diào)制解調(diào)器21連接的第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,執(zhí)行以下操作:

判斷:先確定待獲取的數(shù)據(jù)包的大小,以判斷是否需要添加壓縮標(biāo)識(shí);

決策:若待獲取的數(shù)據(jù)包超過usb的buffer的容量,則在發(fā)送數(shù)據(jù)包獲取請(qǐng)求之前,在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí);

發(fā)送:在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí)之后,發(fā)送數(shù)據(jù)包獲取請(qǐng)求。

第一應(yīng)用處理器10通過usb接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),執(zhí)行以下操作:

提?。捍_定能否從數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),若能,則提取出壓縮標(biāo)識(shí);

壓縮:基于提取的壓縮標(biāo)識(shí),對(duì)通過第一調(diào)制解調(diào)器11從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14提取的數(shù)據(jù)包進(jìn)行壓縮;

反饋:反饋壓縮的數(shù)據(jù)包。

最終,第二應(yīng)用處理器20通過usb接收第一應(yīng)用處理器10反饋的數(shù)據(jù)包,以完成數(shù)據(jù)包傳輸過程。上述的操作過程,可參照?qǐng)D4。

需要說明的是,第二應(yīng)用處理器20發(fā)送的是數(shù)據(jù)包獲取請(qǐng)求,由于數(shù)據(jù)包獲取請(qǐng)求一般都小于buffer的容量,因此可不對(duì)數(shù)據(jù)包獲取請(qǐng)求進(jìn)行壓縮。

在本實(shí)施例中,第一應(yīng)用處理器10在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出應(yīng)用處理器20添加的壓縮標(biāo)識(shí),若能提取出壓縮標(biāo)識(shí),才對(duì)數(shù)據(jù)包進(jìn)行壓縮,防止數(shù)據(jù)包小于buffer的容量時(shí)也進(jìn)行壓縮,以防止系統(tǒng)資源的浪費(fèi),并且節(jié)省了數(shù)據(jù)包傳輸?shù)臅r(shí)間,從而提高了數(shù)據(jù)包傳輸?shù)男省?/p>

進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第三實(shí)施例。

數(shù)據(jù)包傳輸方法第三實(shí)施例與數(shù)據(jù)包傳輸方法第一實(shí)施例的區(qū)別在于,所述步驟s20之前,所述數(shù)據(jù)包傳輸方法還包括:

所述第一應(yīng)用處理器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;

基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;

在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。

在本實(shí)施例中,所述第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先對(duì)從虛擬用戶識(shí)別卡10a或?qū)嶓w用戶識(shí)別卡14中提取的數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,然后從包頭中獲取數(shù)據(jù)包的長(zhǎng)度,以確定該數(shù)據(jù)包的大小。其中,數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱為type(類型),length(長(zhǎng)度),value(值),t字段表示數(shù)據(jù)包的類型,l字段表示數(shù)據(jù)包的長(zhǎng)度、v字段用于存放數(shù)據(jù)包的內(nèi)容。

本實(shí)施例中,該數(shù)據(jù)包的生成過程為:傳輸層獲取到數(shù)據(jù)包對(duì)應(yīng)的原始數(shù)據(jù),并為原始數(shù)據(jù)添加傳輸層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括傳輸層數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度,得到初始數(shù)據(jù)包,并將初始數(shù)據(jù)包傳輸至傳輸復(fù)用層。當(dāng)傳輸復(fù)用層接收到初始數(shù)據(jù)包后,為初始化數(shù)據(jù)包添加傳輸復(fù)用層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括復(fù)用層的數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度,得到數(shù)據(jù)包,并調(diào)用物理驅(qū)動(dòng)層的發(fā)送接口將該數(shù)據(jù)包發(fā)送給物理層。后續(xù),第一應(yīng)用處理器10對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,就是從物理層(物理傳輸介質(zhì))之上的物理驅(qū)動(dòng)層檢測(cè)數(shù)據(jù)包的包頭,以解析得到數(shù)據(jù)包的大小(長(zhǎng)度)。

當(dāng)?shù)谝粦?yīng)用處理器10確定數(shù)據(jù)包的長(zhǎng)度后,再判斷該數(shù)據(jù)包的長(zhǎng)度是否大于預(yù)設(shè)閾值(即buffer的容量值)。在本實(shí)施例中,所述預(yù)設(shè)閾值可選為512字節(jié),在其它實(shí)施例中,也可以將所述預(yù)設(shè)閾值設(shè)置為其它長(zhǎng)度,在此不再限定。當(dāng)數(shù)據(jù)包的長(zhǎng)度大于所述預(yù)設(shè)閾值時(shí),為了防止數(shù)據(jù)包傳輸導(dǎo)致終端死機(jī),所述第一應(yīng)用處理器10對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮??梢岳斫?,若提取的數(shù)據(jù)包的長(zhǎng)度小于預(yù)設(shè)閾值,所述第一應(yīng)用處理器10可直接通過usb接口發(fā)送該數(shù)據(jù)包至第二應(yīng)用處理器20。

在本實(shí)施例中,在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,所述第一應(yīng)用處理器10對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,再確定所述數(shù)據(jù)包的長(zhǎng)度,僅在數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),才對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,從而提高了數(shù)據(jù)包壓縮的準(zhǔn)確性。

進(jìn)一步地,基于第一至第三實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第四實(shí)施例。

數(shù)據(jù)包傳輸方法第四實(shí)施例與數(shù)據(jù)包傳輸方法第一至第三實(shí)施例的區(qū)別在于,所述步驟s20包括:

步驟a、所述第一應(yīng)用處理器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;

步驟b、確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;

步驟c、在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;

步驟d、通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

在本實(shí)施例中,所述第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮,具體地,先獲取數(shù)據(jù)包對(duì)應(yīng)的源文本,然后確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段,再?gòu)念A(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度,最終通過查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為字典算法,字典算法是最為簡(jiǎn)單的壓縮算法之一。該字典算法把文本中出現(xiàn)頻率大于預(yù)設(shè)一定值的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,當(dāng)前的字典列表中:

00=chinese

01=people

02=china

若當(dāng)期數(shù)據(jù)包中的源文本為:iamachinesepeople,iamfromchina。那么,采用該字典算法,壓縮后的編碼為:iama0001,iamfrom02。

可以理解,壓縮編碼后的長(zhǎng)度顯著縮小,這樣的編碼專有名詞或者固定組合較多的內(nèi)容中,壓縮效率十分顯著,將預(yù)定的文本內(nèi)容用字典中預(yù)定的編碼映射替代,解壓縮的時(shí)候執(zhí)行反向還原即可。

進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:

步驟e、依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段;

步驟f、將所述任兩個(gè)字符段的高四位進(jìn)行刪除,并將所述任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為固定位長(zhǎng)算法(fixedbitlengthpacking),這種算法是把文本用需要的最少的位來(lái)進(jìn)行壓縮編碼。比如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8。轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,00110100,01010110,01111000。所以原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。

可以理解,通過這種組合方式,將需要用到的位數(shù)進(jìn)行了縮小,使得數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反響拆分添加組合即可。

進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:

步驟g、對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法,這種壓縮編碼是一種變長(zhǎng)的編碼,rle根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。具體地:

變體1:重復(fù)次數(shù)+字符

文本字符串:aaabbbccccdddd,編碼后得到:3a3b4c4d;通過該變體算法,即可將數(shù)據(jù)包終端文本字符串進(jìn)行壓縮。

變體2:特殊字符+重復(fù)次數(shù)+字符

文本字符串:aaaaabccccbccc,編碼后得到:bb5abb4cbb3c;其中,該編碼串的最開始說明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說,文本串字符采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)3個(gè)c,因此,需要在3個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。

為了更清楚理解該方案,舉另一個(gè)例子:文本字符串仍然為:aaaaabccccbccc,若當(dāng)前編碼串的最開始說明特殊字符為d,那么,編碼后得到:dd5abd4cbd3c。

變體3:

把文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù)。如果第7位沒有被置位,那么剩下7位就是后面沒有被壓縮的字符的數(shù)量。

例如:文本字符串:aaaaabcdefff,編碼后得到:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將文本字符串分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)快對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒有被置位為1,那么剩下7位是后面沒有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。

需要說明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一窮舉。

進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:

步驟h、確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;

步驟i、若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;

步驟j、采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

即,所述第一應(yīng)用處理器10獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段,若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及字符段的長(zhǎng)度,采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。

該過程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。

lz77算法的壓縮原理:如果文件中有兩塊字符串內(nèi)容相同的話,那么只要知道前一塊字符串內(nèi)容的位置和大小,我們就可以確定后一塊字符串的內(nèi)容。所以我們可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。

為更好理解,下面我們來(lái)舉一個(gè)例子:

有一個(gè)文件的內(nèi)容如下:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。

我們使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。

(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。

從上述例子中可看出,由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。

具體地,lz77算法使用滑動(dòng)窗口尋找匹配串:

即lz77算法使用"滑動(dòng)窗口"的方法,來(lái)尋找文件中的相同部分,文件中相同部分即匹配串。首先,對(duì)匹配串做一個(gè)說明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在文本文件中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。具體地:

lz77從文件的開始處開始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就象在陽(yáng)光下,飛機(jī)的影子滑過大地一樣。對(duì)于文件中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。

窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開始的串。如果當(dāng)前處理字節(jié)開始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開始的串在窗口中沒有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。

處理文件中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒有滑到文件上,這時(shí)窗口中沒有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入文件,最后整個(gè)窗口滑入文件,然后整個(gè)窗口在文件上向后滑動(dòng),直到整個(gè)文件結(jié)束。

需要說明的是,匹配串的長(zhǎng)度有所限制,即本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。

為更好理解本實(shí)施例,舉例如下:

假設(shè)文本字符串為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。

編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的文本字符串第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入文本字符串,那么字符串首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;

編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。

編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。

編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的文本字符串進(jìn)行比對(duì),剩下的文本字符串為aaac,通過該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷文本字符串后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。

編碼的第五步:輸出<4,3>之后,該文本字符串中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。

使用lz77算法進(jìn)行壓縮和解壓縮

為了在解壓縮時(shí),可以區(qū)分“沒有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。

實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。

實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話,那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話,不但沒有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。

壓縮:

從文件的開始到文件結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開始的串在窗口中沒有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。

解壓縮:

從文件開始到文件結(jié)束,每次先讀一位標(biāo)志位,通過這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。

綜上所述,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。

當(dāng)?shù)谝粦?yīng)用處理器10通過上述任一個(gè)壓縮算法對(duì)數(shù)據(jù)包進(jìn)行壓縮之后,再將壓縮后的數(shù)據(jù)包存儲(chǔ)到buffer中進(jìn)行轉(zhuǎn)發(fā)。后續(xù),第二應(yīng)用處理器20即可從buffer中提取出壓縮的數(shù)據(jù)包,并對(duì)提取的壓縮數(shù)據(jù)包進(jìn)行解壓,其中,解壓的方式也包括兩種:當(dāng)?shù)谝粦?yīng)用處理器10是加密壓縮時(shí),所述第二應(yīng)用處理器20采用對(duì)應(yīng)的密文進(jìn)行解壓,當(dāng)?shù)谝粦?yīng)用處理器10是明文壓縮時(shí),所述第二應(yīng)用處理器20即可直接進(jìn)行解壓,以得到解壓后的數(shù)據(jù)包。由于本實(shí)施例中的各個(gè)壓縮算法主要是明文算法,因此,解壓的方式也是明文解壓。

可以理解,本方案中,在移動(dòng)終端100中的電信卡傳輸?shù)臄?shù)據(jù)包較大時(shí),第二應(yīng)用處理器20在request中添加標(biāo)識(shí),使第一應(yīng)用處理器10對(duì)數(shù)據(jù)包進(jìn)行壓縮,以改變數(shù)據(jù)包的期望值,后續(xù)緩存到buffer的數(shù)據(jù)包就不會(huì)超出buffer的容量值,那么,避免了大數(shù)據(jù)包傳輸導(dǎo)致死機(jī)的問題,同時(shí)數(shù)據(jù)包不會(huì)被拆分成多個(gè)數(shù)據(jù)包,避免了數(shù)據(jù)包轉(zhuǎn)發(fā)不完整的情況。

需要說明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
霞浦县| 南川市| 安溪县| 田林县| 达拉特旗| 九寨沟县| 特克斯县| 兰坪| 依安县| 明溪县| 防城港市| 道孚县| 泸西县| 长武县| 芒康县| 巴南区| 博白县| 林口县| 彭水| 红河县| 和顺县| 淮南市| 元阳县| 环江| 全椒县| 旬阳县| 桂东县| 白沙| 霍城县| 阿坝| 中西区| 侯马市| 喀什市| 佛教| 宜良县| 景德镇市| 农安县| 寿光市| 陆丰市| 成都市| 博爱县|