数据传输系统、方法、外接设备和移动终端与流程

文档序号:11206654阅读:1563来源:国知局
数据传输系统、方法、外接设备和移动终端与流程

本发明涉及通信技术领域,尤其涉及一种数据传输系统、方法、外接设备和移动终端。



背景技术:

随着移动通信技术的发展,移动终端已经成为用户随身携带,必不可少的电子设备。在运营商和各大oem(originalequipmentmanufacturer,原始设备制造商)厂商的牵头下,3g(3rdgeneration,第三代移动通信技术)、4g(the4thgenerationmobilecommunicationtechnology,第四代移动通信技术)、ca(carrieraggregation,应用载波聚合技术)以及最新的5g(5th-generation,第五代移动通信技术)应运而生,这些技术的目的是为了提高用户的上网带宽。在此种背景下,一种提高用户上网带宽的方式也悄然而生,移动终端连接两个调制解调器,每个调制解调器都有对应的sim(subscriberidentificationmodule)卡,且每个调制解调器都可以独立上网,然后在上层将用户访问的网络根据实际情况进行两个数据网络的网速叠加,从而达到提高上网带宽的目的。由于运营商对传统用户上网带宽的垄断和限制,终端厂商可以通过该网速叠加技术方案加大用户上网带宽,有效的整合了移动终端中两张sim卡的上网资源,并实现了真dsda(dualsimdualactive,双卡双通),以及双卡双lte(longtermevolution,长期演进)待机。

因此,为了使移动终端连接两个调制解调器,将移动终端与含有调制解调器的外接设备的连接。但是在移动终端和外接设备之间进行数据传输过程中,当外接设备和移动终端之间所传输的数据包过大时,会导致数据包传输失败的情况出现。



技术实现要素:

本发明的主要目的在于提出一种数据传输系统、方法、外接设备和移动终端,旨在解决移动终端通过外接设备实现双lte通信过程中,外接设备和移动终端之间传输的数据包过大,导致数据包传输失败的技术问题。

为实现上述目的,本发明提供的一种数据传输系统,所述数据传输系统包括移动终端和外接设备,所述移动终端包括内嵌有虚拟用户识别卡的第一应用处理器,以及与实体用户识别卡连接的第一调制解调器,所述第一调制解调器包括第一数据转发服务器,所述第一应用处理器包括第一数据读写转发模块和与所述第一数据转发服务器连接的第一数据转发客户端;所述外接设备包括第二应用处理器和第二调制解调器,所述第二调制解调器包括第二数据转发服务器,所述第二应用处理器包括第二数据读写转发模块和与所述第二数据转发服务器连接的第二数据转发客户端;

所述第二数据转发服务器,用于当侦测到数据传输指令时,根据所述数据传输指令获取待传输数据包;压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包;将所述压缩数据包发送给所述第二应用处理器;

所述第二应用处理器,用于通过预设接口将所述压缩数据包发送给所述第一数据读写转发模块;

所述第一数据读写转发模块,用于当接收到所述第二应用处理器发送的所述压缩数据包时,获取所述压缩数据包中的类别标识;若根据所述类别标识确定所述压缩数据包为待处理数据包,则解压缩所述压缩数据包,得到与所述压缩数据包对应的未被压缩的数据包;若根据所述类别标识确定所述压缩数据包为待转发数据包,则将所述压缩数据包转发给所述第一数据转发客户端;

所述第一数据转发客户端,用于将所述压缩数据包发送给所述第一数据转发服务器;

所述第一数据转发服务器,用于在接收到所述压缩数据包时,解压缩所述压缩数据包,得到与所述压缩数据包对应的未被压缩的数据包。

可选地,所述第二数据转发服务器还用于计算所述待传输数据包的大小;若所述待传输数据包的大小大于预设阈值,则压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包,并为所述压缩数据包添加压缩标识;若所述待传输数据包的大小小于或者等于所述预设阈值,则将所述待传输数据包发送给所述第二应用处理器;

所述第二应用处理器还用于通过预设接口将所述待传输数据包发送给所述第一数据读写转发模块;

所述第一数据读写转发模块还用于根据是否在所接收的数据包中检测到压缩标识判断所接收的数据包是否为压缩数据包。

可选地,所述第二数据转发服务器还用于获取所述待传输数据包对应的源文本,计算所述源文本中出现次数大于预设次数的字符段;在预设字典列表中查找所述字符段对应的编码,其中,所述编码的长度小于对应字符段的长度;将所述编码替换对应的所述字符段,以得到所述待传输数据包对应的压缩数据包。

此外,为实现上述目的,本发明还提出一种数据传输方法,所述数据传输方法应用于外接设备,所述第二调制解调器包括与所述第二应用处理器连接的第二数据转发服务器,所述数据传输方法包括:

当所述第二数据转发服务器侦测到数据传输指令时,根据所述数据传输指令获取待传输数据包;

压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包;

将所述压缩数据包发送给所述第二应用处理器,以供所述第二应用处理器通过预设接口将所述压缩数据包发送给移动终端。

可选地,所述压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包的步骤之前,还包括:

计算所述待传输数据包的大小;

若所述待传输数据包的大小大于预设阈值,则所述压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包的步骤包括;

压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包,并为所述压缩数据包添加压缩标识;

若所述待传输数据包的大小小于或者等于所述预设阈值,则将所述待传输数据包发送给所述第二应用处理器,以供所述第二应用处理器通过预设接口将所述待传输数据包发送给移动终端。

可选地,所述压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包的步骤包括:

获取所述待传输数据包对应的源文本,计算所述源文本中出现次数大于预设次数的字符段;

在预设字典列表中查找所述字符段对应的编码,其中,所述编码的长度小于对应字符段的长度;

将所述编码替换对应的所述字符段,以得到所述待传输数据包对应的压缩数据包。

可选地,所述获取所述待传输数据包对应的源文本的步骤之后,还包括:

确定所述源文本中是否存在内容相同且长度大于预设长度的字符段;

若所述源文本中存在内容相同且长度大于所述预设长度的字符段,则确定前后连续两个字符段之间的距离以及所述字符段的长度;

确定所述距离对应的距离标识和所述长度对应的长度标识;

将所述距离标识和所述长度标识替换连续两个字符段中的后一个字符段,以得到所述待传输数据包对应的压缩数据包。

此外,为实现上述目的,本发明还提出一种数据传输方法,所述数据传输方法应用于移动终端,所述移动终端包括内嵌有虚拟用户识别卡的第一应用处理器,以及与实体用户识别卡连接的第一调制解调器,所述第一调制解调器包括第一数据转发服务器,所述第一应用处理器包括第一数据读写转发模块和与所述第一数据转发服务器连接的第一数据转发客户端,所述数据传输方法包括:

当所述第一数据读写转发模块接收到外接设备第二应用处理器发送的压缩数据包时,获取所述压缩数据包中的类别标识;

若根据所述类别标识确定所述压缩数据包为待处理数据包,则解压缩所述压缩数据包,得到与所述压缩数据包对应的未被压缩的数据包;

若根据所述类别标识确定所述压缩数据包为待转发数据包,则将所述压缩数据包转发给所述第一数据转发客户端,以供所述第一数据转发客户端将所述压缩数据包发送给所述第一数据转发服务器,由所述第一数据转发服务器在接收到所述压缩数据包时,解压缩所述压缩数据包,得到与所述压缩数据包对应的未被压缩的数据包。

此外,为实现上述目的,本发明还提出一种外接设备,所述外接设备包括第二应用处理器和第二调制解调器,所述第二调制解调器包括第二数据转发服务器,所述第二应用处理器包括第二数据读写转发模块和与所述第二数据转发服务器连接的第二数据转发客户端;所述外接设备应用于如上所述的应用于外接设备的数据传输方法。

此外,为实现上述目的,本发明还提出一种移动终端,所述移动终端包括内嵌有虚拟用户识别卡的第一应用处理器,以及与实体用户识别卡连接的第一调制解调器,所述第一调制解调器包括第一数据转发服务器,所述第一应用处理器包括第一数据读写转发模块和与所述第一数据转发服务器连接的第一数据转发客户端;所述移动终端应用于如上所述的应用于移动终端的数据传输方法。

本发明提供一种数据传输系统、方法、外接设备和移动终端,通过当所述外接设备的第二数据转发服务器获取到待传输数据包时,压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包;将所述压缩数据包发送给与所述第二数据转发服务器连接的第二应用处理器,以供所述第二应用处理器通过预设接口将所述压缩数据包发送给移动终端。当移动终端接收到外接设备发送的数据包时,解压缩所接收的压缩数据包,以得到外接设备发送的完整的待传输数据包。避免了在外接设备和移动终端进行数据传输过程中,由于所传输的数据包过大,导致数据包传输失败的情况出现。

附图说明

图1为本发明一实施例的lte网络架构的示意图;

图2为本发明实施例中移动终端和外接设备通讯连接的第一种硬件结构示意图;

图3为本发明实施例中移动终端和外接设备通讯连接的一种实体结构示意图;

图4为本发明实施例中移动终端和外接设备通讯连接的第二种硬件结构示意图;

图5为本发明中应用于外接设备的数据传输方法第一实施例的流程示意图;

图6为本发明中应用于外接设备的数据传输方法第二实施例的流程示意图;

图7为本发明实施例中压缩所述待传输数据包,得到所述待传输数据包对应的压缩数据包的一种流程示意图;

图8为本发明中应用于移动终端的数据传输方法较佳实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。

图1是本发明一实施例的lte网络架构的示意图。本发明一实施例的lte网络架构包括:一个或多个移动终端(userequipment,ue)100、e-utran(evolvedumtsterrestrialradioaccessnetwork,演进的umts陆地无线接入网)(图中未标号)、演进分组核心(epc)(图中未标号)、归属订户服务器(hss)107、网络(例如,因特网)(图中未标号)以及电路交换系统(图中未标号)。

e-utran包括演进b节点(enodeb)101和其它enodeb102。enodeb101提供朝向移动终端100的用户面和控制面的协议终接。enodeb101可经由x2接口连接到其他enodeb。enodeb101也可称为基站、基收发机站、无线电基站、无线电收发机、收发机功能、基本服务集、扩展服务集、或其他某个合适的术语。enodeb101为移动终端100提供去往epc的接入点。

enodeb101通过s1接口连接到epc。epc包括移动管理实体(eem)104、其他移动管理实体106、服务网关103,以及分组数据网络(pdn)网关105。移动管理实体104是处理移动终端100与epc之间的信令的控制节点。移动管理实体104提供承载和连接管理。所有用户ip分组通过服务网关103来传递,服务网关103自身连接到pdn网关105。pdn网关105提供ueip地址分配以及其他功能。pdn网关105连接到网络,例如,因特网。

电路交换系统包括交互解决方案模块(iws)108、移动交换中心(msc)109、基站110和移动站111。在一个方面,电路交换系统可以通过iws和mme(mobilitymanagemententity,移动管理实体)与eps(evolvedpacketsystem,演进的分组系统)进行通信。

图2为本发明实施例中移动终端和外接设备通讯连接的一种硬件结构示意图。在本发明实施例中,移动终端100通过usb(universalserialbus,通用串行总线)与外接设备200连接。移动终端100包括第一处理芯片001和与第一处理芯片001连接的第一射频模块12。其中,第一处理芯片001包括内嵌有虚拟用户识别卡13的第一应用处理器(applicationprocessor)10、与实体用户识别卡14连接的第一调制解调器11(modem1)和rpm(resourcepowermanager,资源电源管理器)15。外接设备200包括第二处理芯片002和与第二处理芯片002连接的第二射频模块22。其中,第二处理芯片002包括第二应用处理器20和第二调制解调器(modem2)21。用户识别卡为sim卡。

第一应用处理器10和第二应用处理器20的内部框架包括应用层、框架层等,可处理复杂的逻辑操作以及进行任务分配等。第一应用处理器10内嵌有虚拟用户识别卡13,虚拟用户识别卡13包括存储模块和虚拟片内操作系统(vcos,virtualchipoperatingsystem),该存储模块可为efs(encryptingfilesystem,加密文件系统),存储模块用于存储虚拟用户识别卡13的鉴权数据。

在本发明实施例中,应用处理器指android操作系统,以及基于android操作系统的各种apk(androidpackage,安卓安装包)。第一应用处理器10和第二应用处理器20通过usb实现连接,为用户提供交互接口,将用户输入的操作指令(例如,用户通过用户界面输入的有关启动视频通话的操作指令)传输给第一调制解调器11或第二调制解调器21,以实现两个处理器之间数据的定义与传递,例如,进行两个应用处理器的休眠、唤醒、同步的控制、开关机时芯片启动顺序的控制等。

第一应用处理器10通过usb与第二应用处理器20连接,以实现移动终端100与外接设备200之间的连接。在本发明实施例中,usb复用出三条数据通道,分别用于第一应用处理器10和第二应用处理器20之间用户数据、信令数据和sim卡鉴权数据的交互。即第一应用处理器10和第二应用处理器20通过usb传输用户数据、信令数据和sim卡鉴权数据。其中,用户数据包括但不限于上网产生的数据,图片和聊天信息数据;信令数据包括但不限于开关机的控制数据,开关飞行模式的控制数据,显示状态信号的控制数据;sim卡鉴权数据包括但不限于imsi(internationalmobilesubscriberidentificationnumber,国际移动用户识别码)和ki(keyidentifier,鉴权密钥)。

具体地,第一应用处理器10和第二应用处理器20通过otg(on-the-go)技术进行数据交互。通过otg技术,移动终端100中的第一调制解调器11可通过实体用户识别卡14或虚拟用户识别卡13中的sim卡参数来接入enodeb101,第二调制解调器21可通过实体用户识别卡14或虚拟用户识别卡13的sim卡参数来接入enodeb101,sim卡参数包括但不限于sim卡鉴权数据。

第一调制解调器11和第二调制解调器21包含各种网络交互的网络制式的协议栈,协议栈包含lte/wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)/gsm(globalsystemformobilecommunication,全球移动通信系统)/td-scdma(timedivision-synchronouscodedivisionmultipleaccess,同步时分码分多址)/cdma(codedivisionmultipleaccess,码分多址)/edge(enhanceddatarateforgsmevolution,强型数据速率gsm演进技术)等通讯标准里边规定的协议代码。移动终端100通过协议与运营商网络进行交互,即进行数据流量上网、volte(voiceoverlte)打电话或者cs(circuitswitched,电路交换)域打电话。第一调制解调器11和第二调制解调器21还用于对sim卡的管控等等。

在本发明实施例中,第一射频模块12用于将移动终端100传输的数据处理后传给enodeb101(基站网络),以及用于将enodeb101传输的数据处理后传给移动终端100。第二射频模块22用于将外接设备200传输的数据处理后传给enodeb101(基站网络),以及用于将enodeb101传输的数据处理后传给外接设备200。

第一射频模块12和第二射频模块22所涉及的无线接入技术可以包括lte、gsm、gprs(generalpacketradioservice,通用分组无线服务)、cdma、edge、wlan(wirelesslocalareanetworks,无线局域网)、cdma-2000、td-scdma、wcdma、wifi(wirelessfidelity,无线保真)等等。

实体用户识别卡14与第一调制解调器11连接,虚拟用户识别卡13以软件的形式嵌在第一应用处理器10中。实体用户识别卡14和虚拟用户识别卡13可存储与不同或相同的技术标准相关联的用户信息,用于提供移动通信业务(cs语音业务、ps数据业务和ps语音业务)所需的相关数据,并在其内部存储用户信息、短消息、执行鉴权算法和产生加密密匙等。在特定非限制性实例中,技术标准可为2g通信技术,例如,gsm、edge)、3g通信技术(例如,wcdma、td-scdma)、4g通信技术(例如,lte),或任何其它移动通信技术(例如,4g等等)。

当虚拟用户识别卡13需要进行网络注册时,通过开启的无线保真(wifi)网络发送包含业务菜单数据的下载请求至虚拟用户识别卡13对应的云端服务器,以从云端服务器获取虚拟用户识别卡13的数据信息。当获取到虚拟用户识别卡13的数据信息时,将数据信息写入虚拟用户识别卡13的存储模块中,以实现虚拟用户识别卡13的网络注册。其中,数据信息可以包括:imsi、ki(keyidentifier,鉴权密钥)、iccid(integratedcircuitcardidentifier)、pin(个人标识号,personalidentificationnumber)、puk(pinunlockingkey)。可以理解的是,云端服务器中存储了各个运营商的卡号资源。

由于目前的移动终端100只有一套射频模块,当移动终端100有两张用户识别卡时,移动终端100的两张用户识别卡使用该套射频是分时复用的关系,并不能同时占用。例如,在两张用户识别卡全开时,其中一张用户识别卡只处理gsm通话,而另一张用户识别卡处理4g网络信息,具体哪张用户识别卡执行何种网络,在此不做限定。因此目前的射频双卡分时复用这种架构仅做到了lte+gsm(即一张用户识别卡对应的技术标准为lte,另一张用户识别卡对应的技术标准为gsm)。

可以理解的是,现有的移动终端100虽然可以支持双用户识别卡,由于移动终端100在注册网络的情况下,两张用户识别卡支持的是不同技术标准的网络,一张支持2g或3g,另一张支持4g,会使得移动终端100使用过程中,上网流量速度较慢。在本发明实施例中,移动终端100通过usb连接外接设备200,由于外接设备200包括第二调制解调器21和第二射频模块22,且第二射频模块22支持4g网络,因此,移动终端100可通过usb与外接设备200交互,从而使得移动终端100具备双lte功能(此时虚拟用户识别卡13和实体用户识别卡14管理的技术标准均为lte标准,第一射频模块12和第二射频模块22所涉及的无线接入技术为lte)。

在本发明实施例中,数据传输系统包括移动终端100和外接设备200,移动终端100通过外接设备200具备双lte功能的实现过程可为:①实体用户识别卡14通过第二调制解调器21支持lte,具体过程为:第一调制解调器11将实体用户识别卡14中需要访问lte网络的数据发送给第一应用处理器10,第一应用处理器10将所接收的数据通过usb发送给外接设备200的第二应用处理器20,第二应用处理器20将所接收的数据发送给第二调制解调器21,由第二调制解调器21转发给第二射频模块22,第二射频模块22将所接收的数据通过lte网络发送出去;虚拟用户识别卡13通过第一调制解调器11支持lte,以实现移动终端100可支持双lte。②虚拟用户识别卡13通过第二调制解调器21支持lte,具体过程为:第一应用处理器10将虚拟用户识别卡13中需要访问lte网络的数据通过usb发送给外接设备200的第二应用处理器20,第二应用处理器20将所接收的数据发送给第二调制解调器21,由第二调制解调器21转发给第二射频模块22,第二射频模块22将所接收的数据通过lte网络发送出去;实体用户识别卡14通过第一调制解调器11支持lte,以实现移动终端100可支持双lte。

当移动终端100未通过usb与外接设备200连接时,实体用户识别卡14所对应的技术标准为gsm,用于进行语音通讯,虚拟用户识别卡13通过第一调制解调器11支持lte,用于通过4g网络进行数据访问。

实体用户识别卡14在与移动终端100交互时,移动终端100检测实体用户识别卡14存在与否的信号只在开机瞬时产生,当开机检测不到实体用户识别卡14存在时,移动终端100将提示“插入用户识别卡”。移动终端100开机之后,移动终端100和实体用户识别卡14之间28秒通信一次,完成一些固定的通信检查(例如,用户识别卡是否在位等)。

移动终端100的rpm15用于管控各种资源,包括时钟资源、总线资源、pmic(powermanagementic,电源管理集成电路,即各个芯片的电压)、ddr(内存分配),以及管理芯片的休眠唤醒的中断和应用处理器唤醒的截止时间。移动终端100的各个子系统,在需要资源时,向rpm15申请资源,各个子系统分别包括第一应用处理器10,第一调制解调器11、pronto(wifi/蓝牙、nfc(nearfieldcommunication,近场通信)等)、lpass(lowpoweraudiosubsystem,低功耗音频子系统),rpm15用来决定移动终端100系统的休眠状态,具体是,rpm15基于各个子系统的投票机制实现,当各个子系统都投休眠票时,rpm15才可以使移动终端100整个系统进行休眠。而当移动终端100有一个子或者多个子系统投反对休眠的票,移动终端100整个系统都无法休眠。

在移动终端100的整个系统休眠之后,若是要重新启动运行,需要唤醒第一应用处理器10以进行数据的传输交互。

在移动终端100和外接设备200通过usb通讯连接的情况下,唤醒方式可为以下三种:

1、第一应用处理器10接收到信令数据时,通过usb发送握手关键字给第二应用处理器20,以唤醒第二应用处理器20。

2、第二调制解调器21接收到用户数据时,唤醒第二应用处理器20,由第二应用处理器20通过usb传送握手关键字给第一应用处理器10,以唤醒第一应用处理器10。

3、第二调制解调器21周期性查找寻呼请求,以主动激活自己。若接收到寻呼请求,第二调制解调器21则唤醒第二应用处理器20,由第二应用处理器20通过usb发送握手关键字给第一应用处理器10,以唤醒第二应用处理器20。

需要说明的是,握手关键字可用固定字长的字符标识,是正常数据包中不会出现的字段。如可用0xf9f9f9或者0x9f9f9f表示握手关键字,通过握手关键字可唤醒处于睡眠状态的第一应用处理器10或第二应用处理器20。

此外,第二调制解调器21还可以定期唤醒自己,以在移动终端100进行位置更新时,跟基站进行握手交互,此时不需要唤醒第一应用处理器10。

参照图3,图3为本发明移动终端100和外接设备200通讯连接的实体结构示意图。移动终端100通过usb与外接设备200通讯连接,其中,移动终端包括但不限于手机、pc(personalcomputer,个人电脑)或pad(personaldigitalassistant,个人数字助理),外接设备200包括但不限于无线上网卡和数据卡。需要说明的是,移动终端100通过usb与外接设备200连接位置并不限于图3所示,可根据具体需要来设置移动终端100通过usb与外接设备200的连接位置。

参照图4,由图4可知,第一调制解调器11包括uim(useridentitymodule)驱动112、第一sim卡模块代理113、远程sim数据访问server114、第一拦截模块115和第一数据转发服务器116(数据转发server1)。第一应用处理器10包括第一数据转发客户端011(数据转发client1)和第一数据读写转发模块012。第二调制解调器21包括modem非接入层部分212、第二sim卡模块代理213、远程sim数据访问client214、第二拦截模块215和第二数据转发服务器216(数据转发server2),第二应用处理器20包括第二数据读写转发模块022和第二数据转发客户端021(数据转发client2)。

其中,uim驱动112存储了接入网络所必须的数据,如uimid、鉴权数据aky值、imsi号等。

远程sim数据访问server114和远程sim数据访问client214用于实现第一调制解调器11和第二调制解调器21之间sim卡数据的传输。

第一拦截模块115用于截取远程sim数据访问server114中所需传输的sim卡数据;第二拦截模块215用于截取远程sim数据访问client214中所需传输的sim卡数据。通过第一拦截模块115和第二拦截模块215实现远程sim数据访问server114和远程sim数据访问client214中sim卡数据的交互。

第二数据转发服务器216和第二数据转发客户端021相对应,用于实现第二调制解调器21和第二应用处理器20之间的数据传输;第一数据转发服务器116和第一数据转发客户端011相对应,用于实现第一调制解调器11和第一应用处理器10之间的数据传输。

第一数据读写转发模块012和第二数据读写转发模块022用于通过usb实现第二应用处理器20和第一应用处理器10之间的数据传输。

基于上述的lte网络架构图、移动终端100和外接设备200通讯连接的硬件结构示意图、实体结构示意图以及现有技术存在的问题,提出本发明的各个实施例。

提出本发明一种数据传输系统的第一实施例。在本实施例中,数据传输系统包括移动终端100和外接设备200,移动终端100包括内嵌有虚拟用户识别卡13的第一应用处理器10,以及与实体用户识别卡14连接的第一调制解调器11,第一调制解调器11包括第一数据转发服务器116,第一应用处理器10包括第一数据读写转发模块012和与第一数据转发服务器116连接的第一数据转发客户端011;外接设备200包括第二应用处理器20和第二调制解调器21,第二调制解调器21包括第二数据转发服务器216,第二应用处理器20包括第二数据读写转发模块022和与第二数据转发服务器216连接的第二数据转发客户端021。

第二数据转发服务器216,用于当侦测到数据传输指令时,根据数据传输指令获取待传输数据包。

当外接设备200的第二数据转发服务器216侦测到数据传输指令,第二数据转发服务器216根据数据传输指令获取待传输数据包。其中,数据传输指令可为第二调制解调器21接收到enodeb101的数据请求时所触发的,或者为需要获取移动终端100中虚拟用户识别卡13或实体用户识别卡14的数据等时所触发的。因此,待传输数据包可为获取数据的数据请求数据包,也可为响应移动终端100数据包的响应数据包等。

第二数据转发服务器216还用于压缩待传输数据包,得到待传输数据包对应的压缩数据包;将压缩数据包发送给第二应用处理器20。

第二应用处理器20,用于通过预设接口将压缩数据包发送给第一数据读写转发模块012。

当第二应用处理器20的第二数据转发服务器216得到待传输数据包时,压缩待传输数据包,得到待传输数据包对应的压缩数据包。当第二数据转发服务器216得到压缩数据包时,将压缩数据包通过预设接口发送给移动终端100,具体地,将压缩数据包发送给第一应用处理器10中的第一数据读写转发模块012。在本实施例中,预设接口为usb,在其它实施例中,预设接口也可为其它可用于数据传输的接口。需要说明的是,外接设备200压缩待传输数据包的压缩算法和移动终端100解压缩待传输数据包的解压缩算法是对应的,由外接设备200和移动终端100事先协商好的。第二数据转发服务器216压缩待传输数据包时,可以采用明文压缩方法,也可采用加密压缩方法。

第二数据转发服务器216将压缩数据包发送给第二数据转发客户端021的具体过程为:第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区中。此时,第二数据转发客户端021可通过两种方法获取到第二发送临时缓冲区中的压缩数据包。①:当第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区后,第二数据转发服务器216发送提示消息给第二数据转发客户端021,以提示第二数据转发客户端021已将压缩数据包缓存至第二发送临时缓冲区中。当第二数据转发客户端021接收到该提示消息时,第二数据转发客户端021从与第二发送临时缓冲区对应的第二接收临时缓冲区中提取该压缩数据包。需要说明的是,第二数据转发服务器216发送提示消息给第二数据转发客户端021的通信通道与第二数据转发服务器216发送压缩数据包给第二数据转发客户端021的通信通道不一样。如第二数据转发服务器216通过gpio(generalpurposeinputoutput,通用输入/输出口)端口将提示消息发送给第二数据转发客户端021。

②:第二数据转发客户端021实时监测与第二发送临时缓冲区对应的第二接收临时缓冲区的状态。当第二数据转发客户端021监测到第二接收临时缓冲区中写入压缩数据包时,第二数据转发客户端021第二接收临时缓冲区中提取该压缩数据包。

需要说明的是,第二发送临时缓冲区和第二接收临时缓冲区对应着同一个物理地址,因此第二接收临时缓冲区和第二发送临时缓冲区的容量值是同步变化的。当第二发送临时缓冲区增大时,第二接收临时缓冲区也同步增大;当第二发送临时缓冲区减小时,第二接收临时缓冲区也同步减小。由于第二发送临时缓冲区和第二接收临时缓冲区对应着同一个物理地址,因此,当第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区时,第二数据转发服务器216即可在第二接收临时缓冲区中监测到该压缩数据包,提取该压缩数据包。

进一步地,当第二数据转发客户端021从第二接收临时缓冲区中提取到压缩数据包后,第二数据转发服务器216删除第二发送临时缓冲区中缓存的压缩数据包。

进一步地,在第二调制解调器21和第二应用处理器20传输数据之前,第二应用处理器20需要进行初始化。第二应用处理器20初始化的具体过程为:当第二应用处理器20从休眠状态进入唤醒状态时,第二应用处理器20的第二数据转发客户端021向对应的第二数据转发服务器216发送请求消息,以请求第二数据转发服务器216为第二数据转发客户端021分配一个用户标识。需要说明的是,在外接设备200和移动终端100中,调制解调器的一个服务器对应着应用处理器的多个客户端。当第二数据转发服务器216接收到第二数据转发客户端021发送的请求消息后,第二数据转发服务器216根据该请求消息发送用户标识给第二数据转发客户端021。当第二数据转发客户端021成功接收到该用户标识时,第二数据转发客户端021发送测试数据包给第二数据转发服务器216,其中,该测试数据包中携带有用户标识。当第二数据转发服务器216成功接收到测试数据包时,按照原路返回通知消息给第二数据转发客户端021。当第二数据转发客户端021成功接收到通知消息时,表明第二应用处理器20初始化成功。当第二应用处理器20初始化成功后,将第二数据转发客户端021和第二数据转发服务器216中的标识字段的标识设置为特定标识,以表明第二应用处理器20初始化成功。

第一数据读写转发模块012,用于当接收到第二应用处理器20发送的压缩数据包时,获取压缩数据包中的类别标识;若根据类别标识确定压缩数据包为待处理数据包,则解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包;若根据类别标识确定压缩数据包为待转发数据包,则将压缩数据包转发给第一数据转发客户端011。

第一数据转发客户端011,用于将压缩数据包发送给第一数据转发服务器116。

第一数据转发服务器116,用于在接收到压缩数据包时,解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包。

当移动终端100第一数据读写转发模块012接收到外接设备200第二应用处理器20发送的压缩数据包时,获取压缩数据包中的类别标识,根据类别标识判断压缩数据包的类型。若根据类别标识确定压缩数据包为待处理数据包,第一数据读写转发模块012则按照与外接设备200压缩待传输数据包对应的解压缩方法解压缩压缩数据包,以得到与压缩数据包对应的未被压缩的数据包,实现外接设备200和移动终端100之间的数据传输。

若根据类别标识确定压缩数据包为待转发数据包,第一数据读写转发模块012将所接收的压缩数据包转发给第一数据转发客户端011。第一数据转发客户端011在接收到压缩数据包后,将压缩数据包发送给第一数据转发服务器116。当第一数据转发服务器116接收到压缩数据包时,解压缩所接收的压缩数据包,以得到与压缩数据包对应的未被压缩的数据包。

若第一数据读写转发模块012所接收的待传输数据包(即压缩数据包对应的未被压缩的数据包)为待处理数据包,且需要从虚拟用户识别卡13中获取对应的数据响应该待传输数据包,第一数据读写转发模块012在虚拟用户识别卡13中获取数据响应该待传输数据包。需要说明的是,第一数据读写转发模块012从虚拟用户识别卡13中获取对应的数据响应该待传输数据包过程中,第一数据读写转发模块012不会直接与虚拟用户识别卡13中的存储模块交互,而是先向虚拟用户识别卡13中的虚拟片内操作系统发送数据获取请求,然后虚拟用户识别卡13中的虚拟片内操作系统基于该数据获取请求在存储模块中获取数据,然后将获取的数据再传输给第一数据读写转发模块012。

需要说明的是,类别标识用于区分数据包的类型。在本实施例中,数据包的类型包括两种,一种是不需要发送给第一数据转发服务器116的,需要第一数据读写转发模块012进行处理的待处理数据包,另一种是需要发送给第一数据转发服务器116待转发数据包。类别标识可根据具体需要而设置,如当类别标识为00时,表明该数据包为待处理数据包;当类别标识为01时,表明该数据包为待转发数据包。

需要说明的是,第一数据转发客户端011中有第一发送临时缓冲区,对应的,第一数据转发服务器116中有第一接收临时缓冲区。第一数据转发服务器116与第一数据转发客户端011之间的数据传输过程和第二数据转发服务器216与第二数据转发客户端021之间的数据传输过程相类似,在此不再赘述。

进一步地,当第一数据转发服务器116接收到待传输数据包时,将待传输数据包通过第一拦截模块115、远程sim数据访问server114和第一sim卡模块代理113发送给uim驱动112,uim驱动112根据待传输数据包从实体用户识别卡14获取对应的数据响应待传输数据包,得到响应数据包,并将响应数据包按原路返回给外接设备200。uim驱动112根据待传输数据包从实体用户识别卡14获取对应的数据响应该待传输数据包过程中,uim驱动112不会直接与实体用户识别卡14中的文件存储模块交互,而是先向实体用户识别卡14中的cos(chipoperatingsystem,片内操作系统)操作系统发送数据获取请求,然后实体用户识别卡14的cos操作系统基于该数据获取请求在文件存储模块中获取数据,然后将获取的数据再传输给uim驱动112,以实现待传输数据包的响应。

本实施例通过当外接设备200的第二数据转发服务器216获取到待传输数据包时,压缩待传输数据包,得到待传输数据包对应的压缩数据包;将压缩数据包发送给与第二数据转发服务器216连接的第二应用处理器20,以供第二应用处理器20通过预设接口将压缩数据包发送给移动终端100。当移动终端100接收到外接设备200发送的数据包时,解压缩所接收的压缩数据包,以得到外接设备200发送的完整的待传输数据包。避免了在外接设备200和移动终端100进行数据传输过程中,由于所传输的数据包过大,导致数据包传输失败的情况出现。

进一步地,提出数据传输系统的第二实施例。数据传输系统的第二实施例与第一实施例的区别在于:

第二数据转发服务器216还用于计算待传输数据包的大小;若待传输数据包的大小大于预设阈值,则压缩待传输数据包,得到待传输数据包对应的压缩数据包,并为压缩数据包添加压缩标识。

当第二数据转发服务器216获取到待传输数据包时,第二数据转发服务器216计算待传输数据包的大小,并判断待传输数据包的大小是否大于预设阈值。若待传输数据包的大小大于预设阈值,第二数据转发服务器216则压缩待传输数据包,得到待传输数据包对应的压缩数据包。为了让移动终端100区分压缩数据包和非压缩数据包,第二数据转发服务器216为压缩数据包添加一个压缩标识。具体地,第二数据转发服务器216在压缩数据包的包头中添加一个压缩标识,其中,数据包的包头是大小固定的结构体,在包头结构体中,有个结构体成员变量包括了压缩数据包的长度、以及自定义用于表示压缩数据包的压缩标识。压缩标识可根据具体需要而设置,如可以设置为9f9f,或者设置为f9f9等。

需要说明的是,第二数据转发服务器216和第二数据转发客户端021中定义有用于数据传输的qmi(qualcommmessageinterface)协议,在qmi协议中,定义了标识(flag)字段和数据(data)字段,其中,data字段用于缓存数据包。在data字段中,设置了数据包大小的预设阈值。可以理解的是,data字段中数据包的预设阈值可根据具体需要而设置,如可设置为8个字节,或者12个字节等。

进一步地,第二数据转发服务器216计算待传输数据包大小的具体过程为:解析待传输数据包,得到待传输数据包的包头,从包头中获取待传输数据包的大小。其中,待传输数据包为tlv格式,tlv格式是ber(basicencodingrules,基本编码规则)编码的一种,全称为type(类型),length(长度),value(值),t字段表示待传输数据包的类型,l字段表示待传输数据包的长度,即数据包的大小,v字段用来存放待传输数据包的内容。

进一步地,第二数据转发服务器216在对压缩数据包进行封包操作时添加压缩标识,封包就是给一段数据加上包头,使数据包分为包头和包体两部分内容。包头是大小固定的结构体,在包头结构体中,有个结构体成员变量包括拆分后子数据包的长度、以及自定义的,用于标识拆分后子数据包的标识。

第二数据转发服务器216还用于若待传输数据包的大小小于或者等于预设阈值,则将待传输数据包发送给第二应用处理器20。

第二应用处理器20还用于通过预设接口将待传输数据包发送给第一数据读写转发模块012。

若待传输数据包的大小小于或者等于预设阈值,第二数据转发服务器216则不压缩待传输数据包,直接将待传输数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将待传输数据包发送给移动终端100的第一数据读写转发模块012。

需要说明的是,若待传输数据包的大小小于或者等于预设阈值,可为该带传输数据包添加一个与压缩标识不一样的标识信息,也可不为待传输数据包添加标识。因为压缩数据包中已存在压缩标识,即使不为待传输数据包添加标识信息,移动终端100根据压缩标识即可区分出压缩数据包和待传输数据包。

第一数据读写转发模块012还用于根据是否在所接收的数据包中检测到压缩标识判断所接收的数据包是否为压缩数据包。

当移动终端100的第一数据读写转发模块012接收到第二应用处理器20的第二数据读写转发模块022发送给的数据包时,第一数据读写转发模块012获取数据包中的类别标识,并根据类别标识判断压缩数据包的类型。若根据类别标识确定所接收的数据包为待处理数据包,第一数据读写转发模块012则检测所接收的数据包的包头中是否含有压缩标识。若所接收的数据包包头中含有压缩标识,第二数据读写转发模块022则对所接收的数据包进行解压缩操作,以得到与所接收的数据包对应的未被压缩的数据包。若所接收的数据包包头中未含有压缩标识,则表明该数据包未被压缩过,第一数据读写转发模块012根据所接收的数据包执行相应的操作,如显示外接设备200的信号强度、电量等。

若根据类别标识确定所接收的数据包为待转发数据包,第一数据读写转发模块012则将所接收的数据包通过第一数据转发客户端011发送给第一数据转发服务器116。当第一数据转发服务器116接收到数据包时,第一转发服务器检测所接收的数据包的包头中是否含有压缩标识。若所接收的数据包包头中含有压缩标识,第一转发服务器则对所接收的数据包进行解压缩操作,以得到与所接收的数据包对应的未被压缩的数据包。若所接收的数据包包头中未含有压缩标识,则表明该数据包未被压缩过,直接将所接收的数据包发送给uim驱动,以实现第二调制解调器21和第一调制解调器11之间的数据传输。

本实施例通过先计算待传输数据包大小,只有当待传输数据包的大小大于预设阈值时,才压缩待传输数据包,防止当待传输数据包的大小小于或者等于预设阈值时也对待传输数据包进行压缩操作,从而造成系统资源的浪费,并降低了数据传输的速率。

进一步地,提出数据传输系统的第三实施例。数据传输系统的第三实施例与第一和/或第二实施例的区别在于:

第二数据转发服务器216还用于获取待传输数据包对应的源文本,计算源文本中出现次数大于预设次数的字符段;在预设字典列表中查找字符段对应的编码,其中,编码的长度小于对应字符段的长度;将编码替换对应的字符段,以得到待传输数据包对应的压缩数据包。

当第二数据转发服务器216获取到待传输数据包时,解析待传输数据包,以得到待传输数据包对应的源文本,并计算源文本中出现次数大于预设次数的字符段。当第二数据转发服务器216计算出出现次数大于预设次数的字符段时,第二数据转发服务器216在预设字典列表中查找与该字符段对应的编码,将所查找到的编码替换待传输数据包中对应的字符段,以得到待传输数据包对应的压缩数据包。其中,字符段对应编码的长度小于对应字符段的长度。预设次数可根据具体需要而设置,如可设置为2次、3次或者5次等。预设字典列表为第二数据转发服务器216中预先存储。可以理解的是,在编码过程中,不对源文本中出现次数小于或者等于预设次数的字符段进行处理。

具体地,在本实施例中,所涉及的压缩算法为字典算法。字典算法是把源文本中出现次数大于预设次数的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示这个单词或词汇,例如,若当前的字典列表为:00=chinese;01=i。若待传输数据包中的源文本为:iamachinesepeople,ihaveachinesefriend。则通过字典算法压缩待传输数据包后所得的压缩数据包对应的源文本为:01ama00people,01havea00friend。因此,相对于待传输数据包,压缩数据包的长度显著缩小,若在专有名词或者固定组合内容较多的待传输数据包中,压缩效果十分显著。移动终端100在解压缩过程中,执行反向还原即可。

进一步地,第二数据转发服务器216还用于确定源文本中是否存在内容相同且长度大于预设长度的字符段;若源文本中存在内容相同且长度大于预设长度的字符段,则确定前后连续两个字符段之间的距离以及字符段的长度;确定距离对应的距离标识和长度对应的长度标识;将距离标识和长度标识替换连续两个字符段中的后一个字符段,以得到待传输数据包对应的压缩数据包。

进一步地,当第二数据转发服务器216获取到待传输数据包的源文本时,确定源文本中是否存在内容相同且长度大于预设长度的字符段。若待传输数据包的源文本中存在内容相同且长度大于预设长度的字符段,第二数据转发服务器216则确定前后连续两个字符段之间的距离以及对应字符段的长度,即确定后一个字符段与前一个字符段的距离以及这两个字符段的长度,确定该距离对应的距离标识和长度对应的长度标识,将距离标识和长度标识替换连续两个字符段中的后一个字符段,以得到待传输数据包对应的压缩数据包。其中,预设长度可根据具体需要而设置,如可设置为2个字节,或者3个字节等。

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

lz77算法的压缩原理为:如果数据包中有两块字符串内容相同的话,那么只要知道前一块字符串内容的位置和大小,就可以确定后一块字符串的内容。因此可以用(两块字符串之间的距离,相同内容的长度)这样一对信息,来替换后一块字符串内容。由于(两块字符串之间的距离,相同内容的长度)这一对信息的大小,小于被替换内容的大小,因此数据包的大小会比原始未处理的数据包要小,即数据包得到了压缩。

如有一个数据包的内容为:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的内容,前面已经出现过了,后面用()括起来的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。使用(两块字符串之间的距离,相同内容的长度)这样一对信息,来替换后一块字符串内容,得到http://jiurl.yeah.net(22,13)nease(23,4)。(22,13)中,22表示后一块http://jiurl.与前一块http://jiurl.中任意两个相同字符之间的距离,如后一个h与前一个h的距离;13为相同内容的长度;(23,4)同理,此处不再赘述。

具体地,在使用lz77算法过程中,通过滑动窗口寻找匹配的字符串。即在lz77算法中,使用"滑动窗口"的方法来寻找数据包中的相同部分的内容,在此,将数据包中内容相同的部分称为匹配串。首先,对匹配串做一个说明,匹配串是指一个任意字节的序列,不仅仅是可以在数据包源文本中显示出来的那些字节的序列,还可以是包括标点符号的序列。这里的串强调的是它在文件中的位置,它的长度随着匹配的情况而变化。

具体地:lz77从数据包的起点处开始,一个字节一个字节的向后进行处理。在本发明实施例中,滑动窗口的长度是固定的,该滑动窗口的终止位置在当前处理字节之前,并且紧挨着当前处理字节,随着处理的字节不断的向后滑动,就像在阳光下,飞机的影子滑过大地一样。对于数据包中的每个字节,用当前处理字节开始的串,和窗口中的每个串进行匹配,以寻找最长的匹配串。

窗口中的每个串指窗口中每个字节开始的串。如果当前处理字节开始的串在窗口中有匹配串,就用(之间的距离,匹配长度)这样一对信息,来替换当前串,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就不做改动的输出当前处理字节。

处理数据包中第一个字节的时候,窗口在当前处理字节之前,也就是还没有滑到数据包上,这时窗口中没有任何内容,被处理的字节就会不做改动的输出。随着处理的不断向后,窗口越来越多的滑入数据包,最后整个窗口滑入数据包,然后整个窗口在数据包上向后滑动,直到整个数据包结束。

需要说明的是,匹配串的长度有所限制。在本实施例中,设置了最小匹配串和最大匹配串,必须限制通过滑动窗口匹配出来的字符串大于该最小匹配串并且小于该最大匹配串,才会进行压缩,若是匹配出来的字符串小于该最小匹配串,或大于该最大匹配串,则不会进行后续的压缩操作。

如数据包的源文本为:aaababaaac,当前有一个6个字符的滑动窗口,表示滑动窗口中一次性最多包含6个字符。

编码的第一步:滑动窗口是一个空窗口,此时滑动窗口还不需要滑动,将滑动窗口与滑动窗口外的源文本第一位字符进行比对,发现不存在匹配的字符,此时将滑动窗口往右移动一位,也就是将滑动窗口从右滑入源文本,那么源文本的首字母进入该滑动窗口,此时滑动窗口显示字符a;

编码的第二步:由于滑动窗口内部只有字符a,滑动窗口外紧接着出现字符a,虽然滑动窗口里面和外面存在匹配的字符a,但是为了保证字符编码的效率,事先设置最小匹配串,如将最小匹配串设置为2个字符,由于此时只有一个字符a匹配,不符合要求,那么滑动窗口保持不动,将处理的字符往右移动一位,即与滑动窗口进行比对的字符就是aa,此时滑动窗口内只有一个字符a,因此,不存在匹配的字符,那么将该滑动窗口继续向右滑动,那么文本字符串的第二个字符也进入滑动窗口,此时滑动窗口中出现了两个一样的字符a。

编码的第三步:当滑动窗口内部存在两个相同的字符a时,将滑动窗口内部的两个字符a与窗口外的字符进行比对,由于滑动窗口外紧接着的两个字符是ab,不匹配,因此滑动窗口继续右滑,当滑动窗口滑动出现aaa时,滑动窗口外紧接着出现的字符是bab,与滑动窗口内的字符不匹配,那么滑动窗口继续向右滑动,以使得滑动窗口内部出现aaab,此时,由于滑动窗口内部的字符ab与滑动窗口外部紧接着的字符ab匹配,认为找到了相似长度为2的ab,因此滑动窗口外的ab满足最小匹配串的要求,因此一对〈长度,距离〉就被输出了,长度(length)是2并且向后距离也是2,所以输出为<2,2>。

编码的第四步:当后一个字符串ab用<2,2>输出之后,该段字符串就相当于删除了,此时将滑动窗口与剩下的源文本进行比对,剩下的源文本为aaac,通过该滑动窗口比对时,在将aaac中的前两个aa与滑动窗口进行比对时,虽然aa与滑动窗口出现相同内容和长度的字符,并且符合最小字符串,但是为了提高压缩效率,会继续判断源文本后面是否还有匹配的字符串,若此时检测到出还有一个字符a,即刚好有字符串aaa与滑动窗口内的三个字符a相同,那么确定剩下的字符串aaa与滑动窗口内aaa的距离以及相同字符串的长度,此时由于删除了原本字符串中的后一个ab,因此aaa与滑动窗口内aaa的距离是4,相同的内容长度是3,可输出<4,3>。

编码的第五步:输出<4,3>之后,该源文本中还需要处理的字符只有c,由于该滑动窗口中的字符是aaab,不匹配,因此滑动窗口向右滑动一位,将字符c也滑进该滑动窗口,那么滑动窗口内的字符就为aaabc。由于后续没有内容需要处理,那么将该滑动窗口内的所有字符都输出,最终得到的编码串为aaab<2,2><4,3>c。

为了在解压缩时,可以区分“没有匹配的字节”和“(之间的距离,匹配长度)对”,还需要在每个“没有匹配的字节”或者“(之间的距离,匹配长度)对”之前,放上一位,来指明是“没有匹配的字节”,还是“(之间的距离,匹配长度)对”。本发明实施例中,可选用0表示“没有匹配的字节”,用1表示“(之间的距离,匹配长度)对”。

实际应用中,固定(之间的距离,匹配长度)对中的,“之间的距离”和“匹配长度”所使用的位数。由于要固定“之间的距离”所使用的位数,所以才使用了固定大小的窗口,比如窗口的大小为32kb,那么用15位(2^15=32k)就可以保存0-32k范围内的任何一个值。此外,还将限定最大的匹配长度,这样一来,“匹配长度”所使用的位数也就固定了。

实际应用中,还将设定一个最小匹配长度,只有当两个串的匹配长度大于最小匹配长度时,才认为是一个匹配。为更好理解,举一个例子来说明这样做的原因:比如,“距离”使用15位,“长度”使用8位,那么“(之间的距离,匹配长度)对”将使用23位,也就是差1位3个字节。如果匹配长度小于3个字节的话,那么用“(之间的距离,匹配长度)对”进行替换的话,不但没有压缩,反而会增大,所以需要一个最小匹配长度。

使用lz77算法进行压缩的过程为:从数据包的起点到数据包的终点,即从数据包的开始到数据包的结束,一个字节一个字节的向后进行处理。用当前处理字节开始的串,和滑动窗口中的每个串进行匹配,寻找最长的匹配串。如果当前处理字节开始的串在窗口中有匹配串,就先输出一个标志位,表明下面是一个(之间的距离,匹配长度)对,然后输出(之间的距离,匹配长度)对,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就先输出一个标志位,表明下面是一个没有改动的字节,然后不做改动的输出当前处理字节,然后继续处理当前处理字节的下一个字节。

使用lz77算法进行解压缩的过程为:从数据包的起点到数据包的终点,每次先读一位标志位,通过这个标志位来判断下面是一个(之间的距离,匹配长度)对,还是一个没有改动的字节。如果是一个(之间的距离,匹配长度)对,就读出固定位数的(之间的距离,匹配长度)对,然后根据对中的信息,将匹配串输出到当前位置。如果是一个没有改动的字节,就读出一个字节,然后输出这个字节。

综上,可以看出,lz77压缩时需要做大量的匹配工作,而解压缩时需要做的工作很少,也就是说解压缩相对于压缩将快的多,这对于需要进行一次压缩,多次解压缩的情况,是一个效果显著的优点。

进一步地,还可采用固定位长算法(fixedbitlengthpacking)压缩待传输数据包,具体过程为:当第二数据转发服务器216获取到待传输数据包的源文本时,依次确定源文本中高四位为零且相邻的任两个字符段,再将任两个字符段的高四位进行删除,并将任两个字符段的低四位进行组合,以得到待传输数据包对应的压缩数据包。

如:八个十六进制数:1,2,3,4,5,6,7,8,转换为二进制为:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每个数只用到了低4位,而高4位没有用到(全为0),因此对低4位进行压缩编码后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后两两补充为8位字节得到:00010010,001100,010110,011000。因此原来的八个十六进制数缩短了一半,得到4个十六进制数:12,34,56,78。

可以理解的是,采用固定位长算法压缩待传输数据包,将需要用到的位数进行了缩小,使得压缩所得的压缩数据包的容量有所减小,同理,解压时执行反向拆分添加组合即可。

进一步地,还可采用rle(runlengthencoding,游程编码,又译行程长度编码)算法压缩待传输数据包,具体过程为:当第二数据转发服务器216获取到待传输数据包的源文本时,确定源文本中连续出现的字符,采用重复次数加字符进行代替,以得到待传输数据包对应的压缩数据包。rle算法是一种变长的编码,rle算法根据文本不同的具体情况会有不同的压缩编码变体与之相适应,以产生更大的压缩比率。下面具体介绍各种变体。

变体1:重复次数加上对应的字符。如待传输数据包的源文本为:aaabbbccccdddd,编码后得到的压缩数据包对应的源文本为:3a3b4c4d。通过变体1算法,即可将待传输数据包文本字符串进行压缩。

变体2:特殊字符加上重复次数和字符。如待传输数据包的源文本为:aaaaabccccbccc,编码后得到的压缩数据包对应的源文本为:bb5abb4cbb3c;其中,该编码串的最开始说明特殊字符为b,然后再添加一个b,b后面跟着的数字就表示出重复的次数。也就是说,源文本采用该变体2算法进行编码压缩时,先在编码后的编码串的首字母说明特殊字符为b,然后由于后面紧接着出现5个字符a,需要在这5个字符a之前添加一个特殊字符即字符b,因此就是bb5a,在5a之后出现b,且b之后又出现4个c,因此,需要在4个c之前再添加一个特殊字符b,与前面连接起来就是bb5abb4c,后面采用同样的方式,即可得到最终的编码串bb5abb4cbb3c。如待传输数据包的源文本为:aaaaabccccbccc,若编码串的最开始说明特殊字符为d,那么,编码后得到的压缩数据包对应的源文本为:dd5abd4cbd3c。由此可知,压缩过程中编码串的特殊字符可根据具体需要而设置。

变体3:把源文本每个字节分组成块,每个字符最多重复127次。每个块以一个特殊字节开头。那个特殊字节的第7位如果被置位,那么剩下的7位数值就是后面的字符的重复次数;如果第7位没有被置位,那么剩下7位就是后面没有被压缩的字符的数量。如待传输数据包的源文本为:aaaaabcdefff,编码后得到的压缩数据包对应的源文本为:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先将源文本分组成三个块,分别是aaaaa、bcde和fff,三个块对应的特殊字符分别是10000101、00000100和10000011,由于10000101中第7位被置位为1,因此剩下的7位数值为后面的字符的重复次数,此时可知剩下的7位数值对应的值为5,即可得到85a;同理,由于00000100中的第7位没有被置位为1,那么剩下7位是后面没有被压缩的字符的数量,可知此时剩下7位对应的值为4,即可得到4bcde;同理可确定83f,此处不在赘述。

需要说明的是,以上所列举出的三种3种rle变体算法仅仅是较佳的几种变体算法,本领域技术人员利用本发明的技术思想,根据其具体需求所提出的其它rle变体算法均在本发明的保护范围内,在此不进行一一列举。

本实施例通过压缩算法压缩待传输数据包,实现外接设备200和移动终端100之间的大数据包传输问题,同时避免了将待传输数据包拆分成多个子数据包,在传输子数据包过程时,由于某个子数据包丢失,从而导致数据传输失败的情况。

需要说明的是,本实施例是以外接设备200为发送端,移动终端100为接收端为例来说明外接设备200和移动终端100之间的数据传输过程。在其它实施例中,也可以将移动终端100作为发送端,外接设备200作为接收端来说明外接设备200和移动终端100之间的数据传输过程。可以理解的是,移动终端100作为发送端,外接设备200作为接收端与移动终端100作为接收端,外接设备200作为发送端的数据传输原理一致,在此不再赘述。

本发明还提供一种应用于外接设备200的数据传输方法。

参照图5,图5为本发明中应用于外接设备200的数据传输方法较佳实施例的流程示意图。

本实施例提出一种数据传输方法,在本实施例中,提供了数据传输方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

数据传输方法应用于通过预设接口与移动终端100连接的外接设备200中,外接设备200包括第二应用处理器20和第二调制解调器21,第二调制解调器21包括第二数据转发服务器216,第二应用处理器20包括第二数据读写转发模块022和与第二数据转发服务器216连接的第二数据转发客户端021。移动终端100包括内嵌有虚拟用户识别卡13的第一应用处理器10,以及与实体用户识别卡14连接的第一调制解调器11,第一调制解调器11包括第一数据转发服务器116,第一应用处理器10包括第一数据读写转发模块012和与第一数据转发服务器116连接的第一数据转发客户端011。数据传输方法包括:

步骤s10,当第二数据转发服务器216侦测到数据传输指令时,根据数据传输指令获取待传输数据包。

当外接设备200的第二数据转发服务器216侦测到数据传输指令,第二数据转发服务器216根据数据传输指令获取待传输数据包。其中,数据传输指令可为第二调制解调器21接收到enodeb101的数据请求时所触发的,或者为需要获取移动终端100中虚拟用户识别卡13或实体用户识别卡14的数据等时所触发的。因此,待传输数据包可为获取数据的数据请求数据包,也可为响应移动终端100数据包的响应数据包等。

步骤s20,压缩待传输数据包,得到待传输数据包对应的压缩数据包。

步骤s30,将压缩数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将压缩数据包发送给移动终端100。

当第二数据转发服务器216得到待传输数据包时,压缩待传输数据包,得到待传输数据包对应的压缩数据包。当第二数据转发服务器216得到压缩数据包时,将压缩数据包通过预设接口发送给移动终端100,具体地,将压缩数据包发送给第一应用处理器10中的第一数据读写转发模块012。在本实施例中,预设接口为usb,在其它实施例中,预设接口也可为其它可用于数据传输的接口。需要说明的是,外接设备200压缩待传输数据包的压缩算法和移动终端100解压缩待传输数据包的解压缩算法是对应的,由外接设备200和移动终端100事先协商好的。第二数据转发服务器216压缩待传输数据包时,可以采用明文压缩方法,也可采用加密压缩方法。

第二数据转发服务器216将压缩数据包发送给第二数据转发客户端021的具体过程为:第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区中。此时,第二数据转发客户端021可通过两种方法获取到第二发送临时缓冲区中的压缩数据包。①:当第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区后,第二数据转发服务器216发送提示消息给第二数据转发客户端021,以提示第二数据转发客户端021已将压缩数据包缓存至第二发送临时缓冲区中。当第二数据转发客户端021接收到该提示消息时,第二数据转发客户端021从与第二发送临时缓冲区对应的第二接收临时缓冲区中提取该压缩数据包。需要说明的是,第二数据转发服务器216发送提示消息给第二数据转发客户端021的通信通道与第二数据转发服务器216发送压缩数据包给第二数据转发客户端021的通信通道不一样。如第二数据转发服务器216通过gpio(generalpurposeinputoutput,通用输入/输出口)端口将提示消息发送给第二数据转发客户端021。

②:第二数据转发客户端021实时监测与第二发送临时缓冲区对应的第二接收临时缓冲区的状态。当第二数据转发客户端021监测到第二接收临时缓冲区中写入压缩数据包时,第二数据转发客户端021从第二接收临时缓冲区中提取该压缩数据包。

需要说明的是,第二发送临时缓冲区和第二接收临时缓冲区对应着同一个物理地址,因此第二接收临时缓冲区和第二发送临时缓冲区的容量值是同步变化的。当第二发送临时缓冲区的容量值增大时,第二接收临时缓冲区的容量值也同步增大;当第二发送临时缓冲区容量值减小时,第二接收临时缓冲区的容量值也同步减小。由于第二发送临时缓冲区和第二接收临时缓冲区对应着同一个物理地址,因此,当第二数据转发服务器216将压缩数据包缓存至第二发送临时缓冲区时,第二数据转发服务器216即可在第二接收临时缓冲区中监测到该压缩数据包,提取该压缩数据包。

进一步地,当第二数据转发客户端021从第二接收临时缓冲区中提取到压缩数据包后,第二数据转发服务器216删除第二发送临时缓冲区中缓存的压缩数据包。

进一步地,在第二调制解调器21和第二应用处理器20传输数据之前,第二应用处理器20需要进行初始化。第二应用处理器20初始化的具体过程为:当第二应用处理器20从休眠状态进入唤醒状态时,第二应用处理器20的第二数据转发客户端021向对应的第二数据转发服务器216发送请求消息,以请求第二数据转发服务器216为第二数据转发客户端021分配一个用户标识。需要说明的是,在外接设备200和移动终端100中,调制解调器的一个服务器对应着应用处理器的多个客户端。当第二数据转发服务器216接收到第二数据转发客户端021发送的请求消息后,第二数据转发服务器216根据该请求消息发送用户标识给第二数据转发客户端021。当第二数据转发客户端021成功接收到该用户标识时,第二数据转发客户端021发送测试数据包给第二数据转发服务器216,其中,该测试数据包中携带有用户标识。当第二数据转发服务器216成功接收到测试数据包时,按照原路返回通知消息给第二数据转发客户端021。当第二数据转发客户端021成功接收到通知消息时,表明第二应用处理器20初始化成功。当第二应用处理器20初始化成功后,将第二数据转发客户端021和第二数据转发服务器216中的标识字段的标识设置为特定标识,以表明第二应用处理器20初始化成功。需要说明的是,在第二数据转发客户端021和第二数据转发服务器216中,标识字段中存在多个标志位,不同的标志位具有不同的含义,如有的标志位用于表示第二应用处理器的初始化状态,有的标志位表示压缩标识。

本实施例通过当第二数据转发服务器216侦测到数据传输指令时,根据数据传输指令获取待传输数据包;压缩待传输数据包,得到待传输数据包对应的压缩数据包;将压缩数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将压缩数据包发送给移动终端100。实现了在外接设备200和移动终端100进行数据传输过程中,将数据包进行压缩,以减小待传输数据包的大小,避免了在外接设备200和移动终端100进行数据传输过程中,由于所传输的数据包过大,导致数据包传输失败的情况出现。

进一步地,提出本发明应用于外接设备200的数据传输方法第二实施例。

应用于外接设备200的数据传输方法第二实施例与第一实施例的区别在于,参照图6,数据传输方法包括:

步骤s40,计算待传输数据包的大小。

若待传输数据包的大小大于预设阈值,则步骤s20包括:

步骤s21,压缩待传输数据包,得到待传输数据包对应的压缩数据包,并为压缩数据包添加压缩标识。

当第二数据转发服务器216获取到待传输数据包时,第二数据转发服务器216计算待传输数据包的大小,并判断待传输数据包的大小是否大于预设阈值。若待传输数据包的大小大于预设阈值,第二数据转发服务器216则压缩待传输数据包,得到待传输数据包对应的压缩数据包。为了让移动终端100区分压缩数据包和非压缩数据包,第二数据转发服务器216为压缩数据包添加一个压缩标识。具体地,第二数据转发服务器216在压缩数据包的包头中添加一个压缩标识,其中,数据包的包头是大小固定的结构体,在包头结构体中,有个结构体成员变量包括了压缩数据包的长度、以及自定义用于表示压缩数据包的压缩标识。压缩标识可根据具体需要而设置,如可以设置为9f9f,或者设置为f9f9等。

需要说明的是,第二数据转发服务器216和第二数据转发客户端021中定义有用于数据传输的qmi(qualcommmessageinterface)协议,在qmi协议中,定义了标识(flag)字段和数据(data)字段,其中,data字段用于缓存数据包。在data字段中,设置了数据包大小的预设阈值。可以理解的是,data字段中数据包的预设阈值可根据具体需要而设置,如可设置为8个字节,或者12个字节等。

进一步地,第二数据转发服务器216计算待传输数据包大小的具体过程为:解析待传输数据包,得到待传输数据包的包头,从包头中获取待传输数据包的大小。其中,待传输数据包为tlv格式,tlv格式是ber(basicencodingrules,基本编码规则)编码的一种,全称为type(类型),length(长度),value(值),t字段表示待传输数据包的类型,l字段表示待传输数据包的长度,即数据包的大小,v字段用来存放待传输数据包的内容。

进一步地,第二数据转发服务器216在对压缩数据包进行封包操作时添加压缩标识,封包就是给一段数据加上包头,使数据包分为包头和包体两部分内容。包头是大小固定的结构体,在包头结构体中,有个结构体成员变量包括拆分后子数据包的长度、以及自定义的,用于标识压缩数据包的压缩标识。

步骤s50,若待传输数据包的大小小于或者等于预设阈值,则将待传输数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将待传输数据包发送给移动终端100。

若待传输数据包的大小小于或者等于预设阈值,第二数据转发服务器216则不压缩待传输数据包,直接将待传输数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将待传输数据包发送给移动终端100。

需要说明的是,若待传输数据包的大小小于或者等于预设阈值,可为该带传输数据包添加一个与压缩标识不一样的标识信息,也可不为待传输数据包添加标识。因为压缩数据包中已存在压缩标识,即使不为待传输数据包添加标识信息,移动终端100根据压缩标识即可区分出压缩数据包和待传输数据包。

本实施例通过先计算待传输数据包大小,只有当待传输数据包的大小大于预设阈值时,才压缩待传输数据包,防止当待传输数据包的大小小于或者等于预设阈值时也对待传输数据包进行压缩操作,从而造成系统资源的浪费,并降低了数据传输的速率。

进一步地,提出本发明应用于外接设备200的数据传输方法第三实施例。

应用于外接设备200的数据传输方法第三实施例与第一和/或第二实施例的区别在于,参照图7,步骤s20包括:

步骤s21,获取待传输数据包对应的源文本,计算源文本中出现次数大于预设次数的字符段。

步骤s22,在预设字典列表中查找字符段对应的编码,其中,编码的长度小于对应字符段的长度。

步骤s23,将编码替换对应的字符段,以得到待传输数据包对应的压缩数据包。

当第二数据转发服务器216获取到待传输数据包时,解析待传输数据包,以得到待传输数据包对应的源文本,并计算源文本中出现次数大于预设次数的字符段。当第二数据转发服务器216计算出出现次数大于预设次数的字符段时,第二数据转发服务器216在预设字典列表中查找与该字符段对应的编码,将所查找到的编码替换待传输数据包中对应的字符段,以得到待传输数据包对应的压缩数据包。其中,字符段对应编码的长度小于对应字符段的长度。预设次数可根据具体需要而设置,如可设置为2次、3次或者5次等。预设字典列表为第二数据转发服务器216中预先存储。可以理解的是,在编码过程中,不对源文本中出现次数小于或者等于预设次数的字符段进行处理。

具体地,在本实施例中,所涉及的压缩算法为字典算法。字典算法是把源文本中出现次数大于预设次数的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示这个单词或词汇,例如,若当前的字典列表为:00=chinese;01=i。若待传输数据包中的源文本为:iamachinesepeople,ihaveachinesefriend。则通过字典算法压缩待传输数据包后所得的压缩数据包对应的源文本为:01ama00people,01havea00friend。因此,相对于待传输数据包,压缩数据包的长度显著缩小,若在专有名词或者固定组合内容较多的待传输数据包中,压缩效果十分显著。移动终端100在解压缩过程中,执行反向还原即可。

进一步地,获取待传输数据包对应的源文本的步骤之后,数据传输方法还包括:

步骤a,确定源文本中是否存在内容相同且长度大于预设长度的字符段。

步骤b,若源文本中存在内容相同且长度大于预设长度的字符段,则确定前后连续两个字符段之间的距离以及字符段的长度。

步骤c,确定距离对应的距离标识和长度对应的长度标识。

步骤d,将距离标识和长度标识替换连续两个字符段中的后一个字符段,以得到待传输数据包对应的压缩数据包。

进一步地,当第二数据转发服务器216获取到待传输数据包的源文本时,确定源文本中是否存在内容相同且长度大于预设长度的字符段。若待传输数据包的源文本中存在内容相同且长度大于预设长度的字符段,第二数据转发服务器216则确定前后连续两个字符段之间的距离以及对应字符段的长度,即确定后一个字符段与前一个字符段的距离以及这两个字符段的长度,确定该距离对应的距离标识和长度对应的长度标识,将距离标识和长度标识替换连续两个字符段中的后一个字符段,以得到待传输数据包对应的压缩数据包。其中,预设长度可根据具体需要而设置,如可设置为2个字节,或者3个字节等。

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

lz77算法的压缩原理为:如果数据包中有两块字符串内容相同的话,那么只要知道前一块字符串内容的位置和大小,就可以确定后一块字符串的内容。因此可以用(两块字符串之间的距离,相同内容的长度)这样一对信息,来替换后一块字符串内容。由于(两块字符串之间的距离,相同内容的长度)这一对信息的大小,小于被替换内容的大小,因此数据包的大小会比原始未处理的数据包要小,即数据包得到了压缩。

如有一个数据包的内容为:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的内容,前面已经出现过了,后面用()括起来的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。使用(两块字符串之间的距离,相同内容的长度)这样一对信息,来替换后一块字符串内容,得到http://jiurl.yeah.net(22,13)nease(23,4)。(22,13)中,22表示后一块http://jiurl.与前一块http://jiurl.中任意两个相同字符之间的距离,如后一个h与前一个h的距离;13为相同内容的长度;(23,4)同理,此处不再赘述。

具体地,在使用lz77算法过程中,通过滑动窗口寻找匹配的字符串。即在lz77算法中,使用"滑动窗口"的方法来寻找数据包中的相同部分的内容,在此,将数据包中内容相同的部分称为匹配串。首先,对匹配串做一个说明,匹配串是指一个任意字节的序列,不仅仅是可以在数据包源文本中显示出来的那些字节的序列,还可以是包括标点符号的序列。这里的串强调的是它在文件中的位置,它的长度随着匹配的情况而变化。

具体地:lz77从数据包的起点处开始,一个字节一个字节的向后进行处理。在本发明实施例中,滑动窗口的长度是固定的,该滑动窗口的终止位置在当前处理字节之前,并且紧挨着当前处理字节,随着处理的字节不断的向后滑动,就像在阳光下,飞机的影子滑过大地一样。对于数据包中的每个字节,用当前处理字节开始的串,和窗口中的每个串进行匹配,以寻找最长的匹配串。

窗口中的每个串指窗口中每个字节开始的串。如果当前处理字节开始的串在窗口中有匹配串,就用(之间的距离,匹配长度)这样一对信息,来替换当前串,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就不做改动的输出当前处理字节。

处理数据包中第一个字节的时候,窗口在当前处理字节之前,也就是还没有滑到数据包上,这时窗口中没有任何内容,被处理的字节就会不做改动的输出。随着处理的不断向后,窗口越来越多的滑入数据包,最后整个窗口滑入数据包,然后整个窗口在数据包上向后滑动,直到整个数据包结束。

需要说明的是,匹配串的长度有所限制。在本实施例中,设置了最小匹配串和最大匹配串,必须限制通过滑动窗口匹配出来的字符串大于该最小匹配串并且小于该最大匹配串,才会进行压缩,若是匹配出来的字符串小于该最小匹配串,或大于该最大匹配串,则不会进行后续的压缩操作。

如数据包的源文本为:aaababaaac,当前有一个6个字符的滑动窗口,表示滑动窗口中一次性最多包含6个字符。

编码的第一步:滑动窗口是一个空窗口,此时滑动窗口还不需要滑动,将滑动窗口与滑动窗口外的源文本第一位字符进行比对,发现不存在匹配的字符,此时将滑动窗口往右移动一位,也就是将滑动窗口从右滑入源文本,那么源文本的首字母进入该滑动窗口,此时滑动窗口显示字符a;

编码的第二步:由于滑动窗口内部只有字符a,滑动窗口外紧接着出现字符a,虽然滑动窗口里面和外面存在匹配的字符a,但是为了保证字符编码的效率,事先设置最小匹配串,如将最小匹配串设置为2个字符,由于此时只有一个字符a匹配,不符合要求,那么滑动窗口保持不动,将处理的字符往右移动一位,即与滑动窗口进行比对的字符就是aa,此时滑动窗口内只有一个字符a,因此,不存在匹配的字符,那么将该滑动窗口继续向右滑动,那么文本字符串的第二个字符也进入滑动窗口,此时滑动窗口中出现了两个一样的字符a。

编码的第三步:当滑动窗口内部存在两个相同的字符a时,将滑动窗口内部的两个字符a与窗口外的字符进行比对,由于滑动窗口外紧接着的两个字符是ab,不匹配,因此滑动窗口继续右滑,当滑动窗口滑动出现aaa时,滑动窗口外紧接着出现的字符是bab,与滑动窗口内的字符不匹配,那么滑动窗口继续向右滑动,以使得滑动窗口内部出现aaab,此时,由于滑动窗口内部的字符ab与滑动窗口外部紧接着的字符ab匹配,认为找到了相似长度为2的ab,因此滑动窗口外的ab满足最小匹配串的要求,因此一对〈长度,距离〉就被输出了,长度(length)是2并且向后距离也是2,所以输出为<2,2>。

编码的第四步:当后一个字符串ab用<2,2>输出之后,该段字符串就相当于删除了,此时将滑动窗口与剩下的源文本进行比对,剩下的源文本为aaac,通过该滑动窗口比对时,在将aaac中的前两个aa与滑动窗口进行比对时,虽然aa与滑动窗口出现相同内容和长度的字符,并且符合最小字符串,但是为了提高压缩效率,会继续判断源文本后面是否还有匹配的字符串,若此时检测到出还有一个字符a,即刚好有字符串aaa与滑动窗口内的三个字符a相同,那么确定剩下的字符串aaa与滑动窗口内aaa的距离以及相同字符串的长度,此时由于删除了原本字符串中的后一个ab,因此aaa与滑动窗口内aaa的距离是4,相同的内容长度是3,可输出<4,3>。

编码的第五步:输出<4,3>之后,该源文本中还需要处理的字符只有c,由于该滑动窗口中的字符是aaab,不匹配,因此滑动窗口向右滑动一位,将字符c也滑进该滑动窗口,那么滑动窗口内的字符就为aaabc。由于后续没有内容需要处理,那么将该滑动窗口内的所有字符都输出,最终得到的编码串为aaab<2,2><4,3>c。

为了在解压缩时,可以区分“没有匹配的字节”和“(之间的距离,匹配长度)对”,还需要在每个“没有匹配的字节”或者“(之间的距离,匹配长度)对”之前,放上一位,来指明是“没有匹配的字节”,还是“(之间的距离,匹配长度)对”。本发明实施例中,可选用0表示“没有匹配的字节”,用1表示“(之间的距离,匹配长度)对”。

实际应用中,固定(之间的距离,匹配长度)对中的,“之间的距离”和“匹配长度”所使用的位数。由于要固定“之间的距离”所使用的位数,所以才使用了固定大小的窗口,比如窗口的大小为32kb,那么用15位(2^15=32k)就可以保存0-32k范围内的任何一个值。此外,还将限定最大的匹配长度,这样一来,“匹配长度”所使用的位数也就固定了。

实际应用中,还将设定一个最小匹配长度,只有当两个串的匹配长度大于最小匹配长度时,才认为是一个匹配。为更好理解,举一个例子来说明这样做的原因:比如,“距离”使用15位,“长度”使用8位,那么“(之间的距离,匹配长度)对”将使用23位,也就是差1位3个字节。如果匹配长度小于3个字节的话,那么用“(之间的距离,匹配长度)对”进行替换的话,不但没有压缩,反而会增大,所以需要一个最小匹配长度。

使用lz77算法进行压缩的过程为:从数据包的起点到数据包的终点,即从数据包的开始到数据包的结束,一个字节一个字节的向后进行处理。用当前处理字节开始的串,和滑动窗口中的每个串进行匹配,寻找最长的匹配串。如果当前处理字节开始的串在窗口中有匹配串,就先输出一个标志位,表明下面是一个(之间的距离,匹配长度)对,然后输出(之间的距离,匹配长度)对,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就先输出一个标志位,表明下面是一个没有改动的字节,然后不做改动的输出当前处理字节,然后继续处理当前处理字节的下一个字节。

使用lz77算法进行解压缩的过程为:从数据包的起点到数据包的终点,每次先读一位标志位,通过这个标志位来判断下面是一个(之间的距离,匹配长度)对,还是一个没有改动的字节。如果是一个(之间的距离,匹配长度)对,就读出固定位数的(之间的距离,匹配长度)对,然后根据对中的信息,将匹配串输出到当前位置。如果是一个没有改动的字节,就读出一个字节,然后输出这个字节。

综上,可以看出,lz77压缩时需要做大量的匹配工作,而解压缩时需要做的工作很少,也就是说解压缩相对于压缩将快的多,这对于需要进行一次压缩,多次解压缩的情况,是一个效果显著的优点。

进一步地,还可采用固定位长算法(fixedbitlengthpacking)压缩待传输数据包,具体过程为:当第二数据转发服务器216获取到待传输数据包的源文本时,依次确定源文本中高四位为零且相邻的任两个字符段,再将任两个字符段的高四位进行删除,并将任两个字符段的低四位进行组合,以得到待传输数据包对应的压缩数据包。

如:八个十六进制数:1,2,3,4,5,6,7,8,转换为二进制为:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每个数只用到了低4位,而高4位没有用到(全为0),因此对低4位进行压缩编码后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后两两补充为8位字节得到:00010010,001100,010110,011000。因此原来的八个十六进制数缩短了一半,得到4个十六进制数:12,34,56,78。

可以理解的是,采用固定位长算法压缩待传输数据包,将需要用到的位数进行了缩小,使得压缩所得的压缩数据包的容量有所减小,同理,解压时执行反向拆分添加组合即可。

进一步地,还可采用rle(runlengthencoding,游程编码,又译行程长度编码)算法压缩待传输数据包,具体过程为:当第二数据转发服务器216获取到待传输数据包的源文本时,确定源文本中连续出现的字符,采用重复次数加字符进行代替,以得到待传输数据包对应的压缩数据包。rle算法是一种变长的编码,rle算法根据文本不同的具体情况会有不同的压缩编码变体与之相适应,以产生更大的压缩比率。下面具体介绍各种变体。

变体1:重复次数加上对应的字符。如待传输数据包的源文本为:aaabbbccccdddd,编码后得到的压缩数据包对应的源文本为:3a3b4c4d。通过变体1算法,即可将待传输数据包文本字符串进行压缩。

变体2:特殊字符加上重复次数和字符。如待传输数据包的源文本为:aaaaabccccbccc,编码后得到的压缩数据包对应的源文本为:bb5abb4cbb3c;其中,该编码串的最开始说明特殊字符为b,然后再添加一个b,b后面跟着的数字就表示出重复的次数。也就是说,源文本采用该变体2算法进行编码压缩时,先在编码后的编码串的首字母说明特殊字符为b,然后由于后面紧接着出现5个字符a,需要在这5个字符a之前添加一个特殊字符即字符b,因此就是bb5a,在5a之后出现b,且b之后又出现4个c,因此,需要在4个c之前再添加一个特殊字符b,与前面连接起来就是bb5abb4c,后面采用同样的方式,即可得到最终的编码串bb5abb4cbb3c。如待传输数据包的源文本为:aaaaabccccbccc,若编码串的最开始说明特殊字符为d,那么,编码后得到的压缩数据包对应的源文本为:dd5abd4cbd3c。由此可知,压缩过程中编码串的特殊字符可根据具体需要而设置。

变体3:把源文本每个字节分组成块,每个字符最多重复127次。每个块以一个特殊字节开头。那个特殊字节的第7位如果被置位,那么剩下的7位数值就是后面的字符的重复次数;如果第7位没有被置位,那么剩下7位就是后面没有被压缩的字符的数量。如待传输数据包的源文本为:aaaaabcdefff,编码后得到的压缩数据包对应的源文本为:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先将源文本分组成三个块,分别是aaaaa、bcde和fff,三个块对应的特殊字符分别是10000101、00000100和10000011,由于10000101中第7位被置位为1,因此剩下的7位数值为后面的字符的重复次数,此时可知剩下的7位数值对应的值为5,即可得到85a;同理,由于00000100中的第7位没有被置位为1,那么剩下7位是后面没有被压缩的字符的数量,可知此时剩下7位对应的值为4,即可得到4bcde;同理可确定83f,此处不在赘述。

需要说明的是,以上所列举出的三种3种rle变体算法仅仅是较佳的几种变体算法,本领域技术人员利用本发明的技术思想,根据其具体需求所提出的其它rle变体算法均在本发明的保护范围内,在此不进行一一列举。

本实施例通过压缩算法压缩待传输数据包,实现外接设备200和移动终端100之间的大数据包传输问题,同时避免了将待传输数据包拆分成多个子数据包,在传输子数据包过程时,由于某个子数据包丢失,从而导致数据传输失败的情况。

需要说明的是,本实施例是以外接设备200为发送端,移动终端100为接收端为例来说明外接设备200和移动终端100之间的数据传输过程。在其它实施例中,也可以将移动终端100作为发送端,外接设备200作为接收端来说明外接设备200和移动终端100之间的数据传输过程。可以理解的是,移动终端100作为发送端,外接设备200作为接收端与移动终端100作为接收端,外接设备200作为发送端的数据传输原理一致,在此不再赘述。

本发明还提供一种应用于移动终端100的数据传输方法。

参照图8,图8为本发明应用于移动终端100的数据传输方法较佳实施例的流程示意图。

在本实施例中,提供了数据传输方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

数据传输方法应用于通过usb与外接设备200连接的移动终端100中,移动终端100包括内嵌有虚拟用户识别卡13的第一应用处理器10,以及与实体用户识别卡14连接的第一调制解调器11,第一调制解调器11包括第一数据转发服务器116,第一应用处理器10包括第一数据读写转发模块012和与第一数据转发服务器116连接的第一数据转发客户端011。外接设备200包括第二应用处理器20和第二调制解调器21,第二调制解调器21包括第二数据转发服务器216,第二应用处理器20包括第二数据读写转发模块022和与第二数据转发服务器216连接的第二数据转发客户端021。数据传输方法包括:

步骤s110,当第一数据读写转发模块012接收到外接设备200第二应用处理器20发送的压缩数据包时,获取压缩数据包中的类别标识。

步骤s120,若根据类别标识确定压缩数据包为待处理数据包,则解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包。

步骤s130,若根据类别标识确定压缩数据包为待转发数据包,则将压缩数据包转发给第一数据转发客户端011,以供第一数据转发客户端011将压缩数据包发送给第一数据转发服务器116,由第一数据转发服务器116在接收到压缩数据包时,解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包。

当外接设备200的第二数据转发服务器216在获取到待传输数据包,不考虑待传输数据包的大小,直接压缩待传输数据包,将压缩所得的压缩数据包发送给移动终端100时,移动终端100接收到外接设备200发送的压缩数据包的处理过程如下:

当移动终端100第一数据读写转发模块012接收到外接设备200第二应用处理器20发送的压缩数据包时,获取压缩数据包中的类别标识,根据类别标识判断压缩数据包的类型。若根据类别标识确定压缩数据包为待处理数据包,第一数据读写转发模块012则按照与外接设备200压缩待传输数据包对应的解压缩方法解压缩压缩数据包,以得到与压缩数据包对应的未被压缩的数据包,实现外接设备200和移动终端100之间的数据传输。

若根据类别标识确定压缩数据包为待转发数据包,第一数据读写转发模块012将所接收的压缩数据包转发给第一数据转发客户端011。第一数据转发客户端011在接收到压缩数据包后,将压缩数据包发送给第一数据转发服务器116。当第一数据转发服务器116接收到压缩数据包时,解压缩所接收的压缩数据包,以得到与压缩数据包对应的未被压缩的数据包。可以理解的是,与压缩数据包对应的未被压缩的数据包为外接设备中的待传输数据包。

若第一数据读写转发模块012所接收的待传输数据包为待处理数据包,且需要从虚拟用户识别卡13中获取对应的数据响应该待传输数据包,第一数据读写转发模块012在虚拟用户识别卡13中获取数据响应该待传输数据包。需要说明的是,第一数据读写转发模块012从虚拟用户识别卡13中获取对应的数据响应该待传输数据包过程中,第一数据读写转发模块012不会直接与虚拟用户识别卡13中的存储模块交互,而是先向虚拟用户识别卡13中的虚拟片内操作系统发送数据获取请求,然后虚拟用户识别卡13中的虚拟片内操作系统基于该数据获取请求在存储模块中获取数据,然后将获取的数据再传输给第一数据读写转发模块012。

需要说明的是,类别标识用于区分数据包的类型。在本实施例中,数据包的类型包括两种,一种是不需要发送给第一数据转发服务器116的,需要第一数据读写转发模块012进行处理的待处理数据包,另一种是需要发送给第一数据转发服务器116待转发数据包。类别标识可根据具体需要而设置,如当类别标识为00时,表明该数据包为待处理数据包;当类别标识为01时,表明该数据包为待转发数据包。

需要说明的是,第一数据转发客户端011中有第一发送临时缓冲区,对应的,第一数据转发服务器116中有第一接收临时缓冲区。第一数据转发服务器116与第一数据转发客户端011之间的数据传输过程和第二数据转发服务器216与第二数据转发客户端021之间的数据传输过程相类似,在此不再赘述。

进一步地,当第一数据转发服务器116接收到待传输数据包时,将待传输数据包通过第一拦截模块115、远程sim数据访问server114和第一sim卡模块代理113发送给uim驱动112,uim驱动112根据待传输数据包从实体用户识别卡14获取对应的数据响应待传输数据包,得到响应数据包,并将响应数据包按原路返回给外接设备200。uim驱动112根据待传输数据包从实体用户识别卡14获取对应的数据响应该待传输数据包过程中,uim驱动112不会直接与实体用户识别卡14中的文件存储模块交互,而是先向实体用户识别卡14中的cos(chipoperatingsystem,片内操作系统)操作系统发送数据获取请求,然后实体用户识别卡14的cos操作系统基于该数据获取请求在文件存储模块中获取数据,然后将获取的数据再传输给uim驱动112,以实现待传输数据包的响应。

本实施例当移动终端100接收到外接设备200发送的数据包时,按照与外接设备200压缩待传输数据包对应的解压缩算法解压缩所接收的压缩数据包,以得到压缩数据包对应的待传输数据包,使外接设备200和移动终端100成功传输大数据包。

进一步地,当外接设备200的第二数据转发服务器216在获取到待传输数据包时,先判断待传输数据包的大小是否大于预设阈值,只有在待传输数据包的大小大于预设阈值时,第二数据转发服务器216才压缩待传输数据,得到压缩数据包,并在压缩数据包的包头中添加压缩标识,将含有压缩标识的压缩数据包通过第二应用处理器20发送给移动终端100;若待传输数据包的大小小于或者等于预设阈值,第二数据转发服务器216则通过第二应用处理器20直接将待传输数据包发送给移动终端100。此时,移动终端100接收到第二应用处理器20发送的数据包的处理过程如下:

当移动终端100的第一数据读写转发模块012接收到第二应用处理器20的第二数据读写转发模块022发送给的数据包时,第一数据读写转发模块012获取数据包中的类别标识,并根据类别标识判断所接收数据包的类型。若根据类别标识确定所接收的数据包为待处理数据包,第一数据读写转发模块012则检测所接收的数据包的包头中是否含有压缩标识。若所接收的数据包包头中含有压缩标识,则表明所接收的数据包为压缩数据包,第二数据读写转发模块022对所接收的数据包进行解压缩操作,以得到与所接收的数据包对应的未被压缩的数据包。若所接收的数据包包头中未含有压缩标识,则表明该数据包未被压缩过,第一数据读写转发模块012根据所接收的数据包执行相应的操作,如显示外接设备200的信号强度、电量等。

若根据类别标识确定所接收的数据包为待转发数据包,第一数据读写转发模块012则将所接收的数据包通过第一数据转发客户端011发送给第一数据转发服务器116。当第一数据转发服务器116接收到数据包时,第一转发服务器检测所接收的数据包的包头中是否含有压缩标识。若所接收的数据包包头中含有压缩标识,第一转发服务器则对所接收的数据包进行解压缩操作,以得到与所接收的数据包对应的未被压缩的数据包。若所接收的数据包包头中未含有压缩标识,则表明该数据包未被压缩过,直接将所接收的数据包发送给uim驱动,以实现第二调制解调器21和第一调制解调器11之间的数据传输。

本实施例通过检测数据包中是否存在压缩标识来判断是否需要执行解压缩数据包的操作,提高了移动终端100和外接设备200之间数据传输的成功率,避免了移动终端100对不需要进行解压缩的数据包进行解压缩操作。

进一步地,本发明还提供一种外接设备200,外接设备200包括第二应用处理器20和第二调制解调器21,第二调制解调器21包括第二数据转发服务器216,第二应用处理器20包括第二数据读写转发模块022和与第二数据转发服务器216连接的第二数据转发客户端021。外接设备200应用于数据传输方法,数据传输方法包括:

当第二数据转发服务器216侦测到数据传输指令时,根据数据传输指令获取待传输数据包;

压缩待传输数据包,得到待传输数据包对应的压缩数据包;

将压缩数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将压缩数据包发送给移动终端100。

进一步地,压缩待传输数据包,得到待传输数据包对应的压缩数据包的步骤之前,还包括:

计算待传输数据包的大小;

若待传输数据包的大小大于预设阈值,则压缩待传输数据包,得到待传输数据包对应的压缩数据包的步骤包括;

压缩待传输数据包,得到待传输数据包对应的压缩数据包,并为压缩数据包添加压缩标识;

若待传输数据包的大小小于或者等于预设阈值,则将待传输数据包发送给第二应用处理器20,以供第二应用处理器20通过预设接口将待传输数据包发送给移动终端100。

进一步地,压缩待传输数据包,得到待传输数据包对应的压缩数据包的步骤包括:

获取待传输数据包对应的源文本,计算源文本中出现次数大于预设次数的字符段;

在预设字典列表中查找字符段对应的编码,其中,编码的长度小于对应字符段的长度;

将编码替换对应的字符段,以得到待传输数据包对应的压缩数据包。

进一步地,获取待传输数据包对应的源文本的步骤之后,还包括:

确定源文本中是否存在内容相同且长度大于预设长度的字符段;

若源文本中存在内容相同且长度大于预设长度的字符段,则确定前后连续两个字符段之间的距离以及字符段的长度;

确定距离对应的距离标识和长度对应的长度标识;

将距离标识和长度标识替换连续两个字符段中的后一个字符段,以得到待传输数据包对应的压缩数据包。

本发明外接设备200具体实施方式与上述应用于外接设备200的数据传输方法各实施例基本相同,在此不再赘述。

进一步地,本发明还提供一种移动终端100,移动终端100包括内嵌有虚拟用户识别卡13的第一应用处理器10,以及与实体用户识别卡14连接的第一调制解调器11,第一调制解调器11包括第一数据转发服务器116,第一应用处理器10包括第一数据读写转发模块012和与第一数据转发服务器116连接的第一数据转发客户端011。移动终端100应用于数据传输方法,数据传输方法包括:

当第一数据读写转发模块012接收到外接设备200第二应用处理器20发送的压缩数据包时,获取压缩数据包中的类别标识;

若根据类别标识确定压缩数据包为待处理数据包,则解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包;

若根据类别标识确定压缩数据包为待转发数据包,则将压缩数据包转发给第一数据转发客户端011,以供第一数据转发客户端011将压缩数据包发送给第一数据转发服务器116,由第一数据转发服务器116在接收到压缩数据包时,解压缩压缩数据包,得到与压缩数据包对应的未被压缩的数据包。

进一步地,第一数据读写转发模块012根据是否在所接收的数据包中检测到压缩标识判断所接收的数据包是否为压缩数据包。

本发明移动终端100具体实施方式与上述应用于移动终端100的数据传输方法各实施例基本相同,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1