一种数据接收方法及设备与流程

文档序号:21100460发布日期:2020-06-16 20:45阅读:195来源:国知局
一种数据接收方法及设备与流程

本申请涉及计算机领域,尤其涉及一种数据接收方法及设备。



背景技术:

现有技术中,人们对智能手机的使用范围越来越广,使用需求也越来越多,从而推进了智能手机的不断更新换代。在对智能手机进行不断更新迭代的过程中,也需要对智能手机中的应用程序进行检测,以确定该智能手机的应用程序是否完好及是否可以正常使用。现有技术中采用安装有质检程序的质检机对智能手机进行质检,在质检的过程中存在数据的发送和接收,在数据发送和接收过程中,往往存在数据粘包或者数据断包的情况,导致数据传输过程中断,从而影响传输的数据的完整性。



技术实现要素:

本申请的一个目的是提供一种数据接收方法及设备,以解决现有技术中数据传输过程中导致的数据粘包或断包,从而影响传输的数据的完整性的问题。

根据本申请的一个方面,提供了一种数据接收方法,其中,所述方法包括:

通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识;

对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容;

通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据;

对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容;

基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容。

进一步地,上述数据接收方法中,所述对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容,包括:

对所述第一数据进行逐字节解析,得到所述第一数据对应的第一解析数据内容;

其中,所述对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容,包括:

对所述剩余数据进行逐字节解析,得到所述剩余数据对应的第二解析数据内容。

进一步地,上述数据接收方法中,所述目标数据的形式包括数据包或封装数据。

进一步地,上述数据接收方法中,所述通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识,包括:

预置所述socket的数据包参数信息,所述数据包参数信息包括包类型、包长度及消息体;

基于所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识。

根据本申请的另一方面,还提供了一种数据接收设备,其中,所述设备包括:

第一接收装置,用于通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识;

第一解析装置,用于对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容;

第二接收装置,用于通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据;

第二解析装置,用于对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容;

融合装置,用于基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容。

进一步地,上述数据接收设备中,所述第一解析装置用于:

对所述第一数据进行逐字节解析,得到所述第一数据对应的第一解析数据内容;

其中,所述第二解析装置用于:

对所述剩余数据进行逐字节解析,得到所述剩余数据对应的第二解析数据内容。

进一步地,上述数据接收设备中,所述目标数据的形式包括数据包或封装数据。

进一步地,上述数据接收设备中,所述第一接收装置用于:

预置所述socket的数据包参数信息,所述数据包参数信息包括包类型、包长度及消息体;

基于所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识。

根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述数据接收方法。

与现有技术相比,本申请通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识,并对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容;当存在数据断包或粘包时,通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据,并对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容;基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种数据接收方法的流程示意图;

图2示出根据本申请一个方面的一种数据接收设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

如图1所示,本申请一个方面的一种数据接收方法的流程示意图,应用于智能手机与质检机之间进行数据传输的质检过程中,在此,本申请的实施例中,不仅可以应用于智能手机与质检机之间,还可以应用于计算机、电脑及ipad等移动终端与质检机之间的数据传输的质检过程。所述方法包括:步骤s11、步骤s12、步骤s13、步骤s14和步骤s15,具体包括如下步骤:

步骤s11,通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识;在此,所述目标数据的形式可以是包括但不限于数据包或封装数据等。所述数据进度标识用于指示所述第一数据在所述目标数据中的传输进度,以便根据该数据进度标识能够清楚的了解到接收的所述第一数据为所述目标数据的具体传输位置,便于后续对所述目标数据中的除所述第一数据外的剩余数据进行整体数据的融合。

需要说明的是,所述套接字socket是一个抽象层,应用程序可以通过它发送或接收数据,可对数据进行像对文件一样的打开、读写和关闭等操作;套接字允许应用程序将i/o插入到网络中,并与网络中的其他应用程序进行通信。

步骤s12,对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容,所述第一解析数据为所述第一数据被解析后对应的数据内容。

当存在数据断包或粘包时,当再次对所述目标数据中的剩余数据进行数据传输时,步骤s13通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据;

步骤s14,对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容,所述第二解析数据为所述剩余数据被解析后对应的数据内容。

步骤s15,基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容。

通过上述步骤s11至步骤s15,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

例如,若需要传输的目标数据为数据d,所述步骤s11通过套接字socket接收目标数据:数据d的第一数据d1和所述第一数据d1对应的数据进度标识p标识;所述步骤s12对所述第一数据d1进行解析,得到所述第一数据d1对应第一解析数据内容d1’;当存在数据断包或粘包时,所述步骤s13还通过所述socket再次接收所述目标数据:数据d中的除所述第一数据d1外的剩余数据d2,即目标数据:数据d由第一数据d1和剩余数据d2组成;在步骤s14中,对所述剩余数据d2进行解析,得到所述剩余数据d2对应的第二解析数据内容d2’;为了得到完整的目标数据的数据内容,所述步骤s15基于所述第一数据d1的数据进度标识p标识,将所述第一解析数据内容d1’和所述第二解析数据内容d2’进行数据融合,得到所述目标数据d对应的数据内容,即目标数据:数据d的数据内容为第一解析数据内容d1’和所述第二解析数据内容d2’的融合,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

又例如,若需要传输的目标数据为数据d,所述步骤s11通过套接字socket接收目标数据:数据d的第一数据d11和所述第一数据d11对应的数据进度标识p标识1;所述步骤s12对所述第一数据d11进行解析,得到所述第一数据d11对应第一解析数据内容d11’;当存在数据断包或粘包且为多次,在本申请一优选实施例中,将所述多次优选为2次,即目标数据d中的除所述第一数据d11外的剩余数据d12分两次进行再次接收,所述剩余数据d12依序分两次进行接收的数据为d121和数据d122,即所述步骤s13还通过所述socket依序再次接收所述目标数据:数据d中的除所述第一数据d11外的剩余数据:数据d121和数据d122,即目标数据:数据d由第一数据d11和剩余数据d12组成,该剩余数据d12分为数据d121和数据d122,且所述数据d121的数据进度标识为p标识2,在步骤s14中,分别对所述剩余数据d2:数据为d121和数据d122进行解析,得到所述数据d121对应解析后的数据内容d121’和所述数据d122对应解析后的数据内容d122’;为了得到完整的目标数据的数据内容,所述步骤s15基于所述第一数据d11对应的数据进度标识p标识1和所述数据d121的数据进度标识为p标识2,将所述第一解析数据内容d11’、所述数据d121对应解析后的数据内容d121’和所述数据d122对应解析后的数据内容d122’进行数据融合,得到所述目标数据d对应的数据内容,即目标数据:数据d的数据内容为第一解析数据内容d1’、数据内容d121’和数据内容d122’的融合,实现了在数据断包或粘包时,对传输的目标数据d对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

接着本申请的上述实施例,所述步骤s12对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容,具体包括:

对所述第一数据进行逐字节解析,得到所述第一数据对应的第一解析数据内容;

其中,所述步骤s14对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容,具体包括:

对所述剩余数据进行逐字节解析,得到所述剩余数据对应的第二解析数据内容。

本申请的实施例中,不论是对目标数据的第一数据进行解析,还是对目标数据的剩余数据进行解析时,均是对数据进行逐字节解析。比如,所述步骤s12在对所述第一数据d1进行解析时,对所述第一数据d1进行逐字节解析,以得到所述第一数据d1对应的第一解析数据内容的d1’;所述步骤s14在对所述剩余数据d2进行解析时,对所述剩余数据d2进行逐字节解析,以得到所述剩余数据d2对应的第二解析数据内容d2’,实现对需要解析的目标数据中的第一数据和剩余数据进行逐字节解析,不仅能够降低解析数据的难度,还可以增加解析后的数据内容的准确度。

接着本申请的上述实施例,所述步骤s11通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识,具体包括:

预置所述socket的数据包参数信息,所述数据包参数信息包括包类型、包长度及消息体;

基于所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识。

例如,先自定义设置所述套接字socket的数据包参数信息,该数据包参数信息包括但不限于包内容、报长度及消息体,比如,将所述包类型自定义为:byte型,将所述包长度自定义为int型,将消息体自定义为byte[],得到包总长度为1+4+消息体.getbytes().length,从而实现对socket通信协议的自定义,以满足用户通信传输需求;之后,在所述步骤s11中基于自定义的所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据d1和所述第一数据对应的数据进度标识;当然,在所述步骤s13中,也可以基于自定义的所述数据包参数信息,通过所述socket接收传输的目标数据中的除所述第一数据d1外的剩余数据d2,从而实现基于自定义的socket通信协议接收数据。

如图2所示,本申请一个方面的一种数据接收设备的结构示意图,应用于智能手机与质检机之间进行数据传输的质检过程中,在此,本申请的实施例中,不仅可以应用于智能手机与质检机之间,还可以应用于计算机、电脑及ipad等移动终端与质检机之间的数据传输的质检过程。所述设备包括:第一接收装置11、第一解析装置12、第二接收装置13、第二解析装置14和融合装置15,具体包括如下:

第一接收装置11,用于通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识;在此,所述目标数据的形式可以是包括但不限于数据包或封装数据等。所述数据进度标识用于指示所述第一数据在所述目标数据中的传输进度,以便根据该数据进度标识能够清楚的了解到接收的所述第一数据为所述目标数据的具体传输位置,便于后续对所述目标数据中的除所述第一数据外的剩余数据进行整体数据的融合。

需要说明的是,所述套接字socket是一个抽象层,应用程序可以通过它发送或接收数据,可对数据进行像对文件一样的打开、读写和关闭等操作;套接字允许应用程序将i/o插入到网络中,并与网络中的其他应用程序进行通信。

第一解析装置12,用于对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容,所述第一解析数据为所述第一数据被解析后对应的数据内容。

当存在数据断包或粘包时,当再次对所述目标数据中的剩余数据进行数据传输时,第二接收装置13通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据;

第二解析装置14,用于对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容,所述第二解析数据为所述剩余数据被解析后对应的数据内容。

融合装置15,用于基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容。

通过上述第一接收装置11至融合装置15,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

例如,若需要传输的目标数据为数据d,所述第一接收装置11通过套接字socket接收目标数据:数据d的第一数据d1和所述第一数据d1对应的数据进度标识p标识;所述第一解析装置12对所述第一数据d1进行解析,得到所述第一数据d1对应第一解析数据内容d1’;当存在数据断包或粘包时,所述第二接收装置13还通过所述socket再次接收所述目标数据:数据d中的除所述第一数据d1外的剩余数据d2,即目标数据:数据d由第一数据d1和剩余数据d2组成;在第二解析装置14中,对所述剩余数据d2进行解析,得到所述剩余数据d2对应的第二解析数据内容d2’;为了得到完整的目标数据的数据内容,所述融合装置15基于所述第一数据d1的数据进度标识p标识,将所述第一解析数据内容d1’和所述第二解析数据内容d2’进行数据融合,得到所述目标数据d对应的数据内容,即目标数据:数据d的数据内容为第一解析数据内容d1’和所述第二解析数据内容d2’的融合,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

又例如,若需要传输的目标数据为数据d,所述第一接收装置11通过套接字socket接收目标数据:数据d的第一数据d11和所述第一数据d11对应的数据进度标识p标识1;所述第一解析装置12对所述第一数据d11进行解析,得到所述第一数据d11对应第一解析数据内容d11’;当存在数据断包或粘包且为多次,在本申请一优选实施例中,将所述多次优选为2次,即目标数据d中的除所述第一数据d11外的剩余数据d12分两次进行再次接收,所述剩余数据d12依序分两次进行接收的数据为d121和数据d122,即所述第二接收装置13还通过所述socket依序再次接收所述目标数据:数据d中的除所述第一数据d11外的剩余数据:数据d121和数据d122,即目标数据:数据d由第一数据d11和剩余数据d12组成,该剩余数据d12分为数据d121和数据d122,且所述数据d121的数据进度标识为p标识2,在第二解析装置14中,分别对所述剩余数据d2:数据为d121和数据d122进行解析,得到所述数据d121对应解析后的数据内容d121’和所述数据d122对应解析后的数据内容d122’;为了得到完整的目标数据的数据内容,所述融合装置15基于所述第一数据d11对应的数据进度标识p标识1和所述数据d121的数据进度标识为p标识2,将所述第一解析数据内容d11’、所述数据d121对应解析后的数据内容d121’和所述数据d122对应解析后的数据内容d122’进行数据融合,得到所述目标数据d对应的数据内容,即目标数据:数据d的数据内容为第一解析数据内容d1’、数据内容d121’和数据内容d122’的融合,实现了在数据断包或粘包时,对传输的目标数据d对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

接着本申请的上述实施例,所述第一解析装置12用于对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容时,具体用于:

对所述第一数据进行逐字节解析,得到所述第一数据对应的第一解析数据内容;

其中,所述第二解析装置14对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容,具体包括:

对所述剩余数据进行逐字节解析,得到所述剩余数据对应的第二解析数据内容。

本申请的实施例中,不论是对目标数据的第一数据进行解析,还是对目标数据的剩余数据进行解析时,均是对数据进行逐字节解析。比如,所述第一解析装置12在对所述第一数据d1进行解析时,对所述第一数据d1进行逐字节解析,以得到所述第一数据d1对应的第一解析数据内容的d1’;所述第二解析装置14在对所述剩余数据d2进行解析时,对所述剩余数据d2进行逐字节解析,以得到所述剩余数据d2对应的第二解析数据内容d2’,实现对需要解析的目标数据中的第一数据和剩余数据进行逐字节解析,不仅能够降低解析数据的难度,还可以增加解析后的数据内容的准确度。

接着本申请的上述实施例,所述第一接收装置11用于通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识时,具体用于:

预置所述socket的数据包参数信息,所述数据包参数信息包括包类型、包长度及消息体;

基于所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识。

例如,先自定义设置所述套接字socket的数据包参数信息,该数据包参数信息包括但不限于包内容、报长度及消息体,比如,将所述包类型自定义为:byte型,将所述包长度自定义为int型,将消息体自定义为byte[],得到包总长度为1+4+消息体.getbytes().length,从而实现对socket通信协议的自定义,以满足用户通信传输需求;之后,在所述第一接收装置11中基于自定义的所述数据包参数信息,通过所述socket接收传输的目标数据的第一数据d1和所述第一数据对应的数据进度标识;当然,在所述第二接收装置13中,也可以基于自定义的所述数据包参数信息,通过所述socket接收传输的目标数据中的除所述第一数据d1外的剩余数据d2,从而实现基于自定义的socket通信协议接收数据。

根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述数据接收方法。

综上所述,本申请通过套接字socket接收传输的目标数据的第一数据和所述第一数据对应的数据进度标识,并对所述第一数据进行解析,得到所述第一数据对应第一解析数据内容;当存在数据断包或粘包时,通过所述socket再次接收所述目标数据中的除所述第一数据外的剩余数据,并对所述剩余数据进行解析,得到所述剩余数据对应的第二解析数据内容;基于所述数据进度标识,将所述第一解析数据内容和所述第二解析数据内容进行数据融合,得到所述目标数据对应的数据内容,实现了在数据断包或粘包时,对传输的目标数据对应的全部的数据内容进行接收,保证了接收的目标数据的完整性。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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