一种数据发送方法及装置与流程

文档序号:11156647阅读:521来源:国知局
一种数据发送方法及装置与制造工艺

本发明涉及数据通信技术领域,尤其涉及一种数据发送方法及装置。



背景技术:

随着网络通信的普及和推广,网络通信为人们带来了便利。在网络通信中网络数据的传输更是其中最重要的一环,现有的网络通信中因为每种物理网络设备接口一般会规定链路层数据帧的最大长度,称之为最大传输单元(Maximum Transmission Unit,MTU),在进行报文传输时,整个报文的长度不能大于MTU。而在具体传输时每个报文都会封装报文头,因此在进行报文传输时,每个报文的实际长度不能超过最大报文段的长度(Management Support System,MSS)。

所以报文进行传输时,如果长度大于最大传输单元就需要对报文进行分片处理,分片是指将一个报文划分为多个子报文进行传输。接收端接收到每个子报文,会将接收到的子报文进行重组。

在现有技术将报文分片后,在发送每个子报文之前,在每个子报文之前添加报文头时,需要先拷贝待发送的子报文,在该子报文之前添加报文头然后发送,但是报文分片后包含的子报文的数量可能很多,如果对每个子报文都进行拷贝需要使用很多的处理资源,意味着网络延时的增加和功耗的增加。



技术实现要素:

本发明实施例提供一种数据发送方法及装置,用以解决现有技术中子报文添加报文头占用大量处理资源,网络延时增加和功耗增加的问题。

本发明实施例提供了一种数据发送方法,应用于电子设备,该方法包括:

根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度;

判断所述报文的长度是否大于最大报文段长度MSS,如果是,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS;

将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻;

针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。

进一步地,所述缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据之前,所述方法还包括:

判断所述第二存储空间的存储状态是否为可用状态,如果否,进行后续步骤;

发送封装后的所述子报文之后,所述方法还包括:

将所述第一存储空间的存储状态修改为可用状态。

进一步地,当所述第二存储空间的存储状态为可用状态时,所述方法还包括:

直接在所述第二存储空间中添加所述子报文对应的报文头;

发送封装后的所述子报文,并将所述第一存储空间的存储状态修改为可用状态。

进一步地,所述缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据之前,所述方法还包括:

确定每个报文组的发送顺序;

根据所述发送顺序,依次发送每个报文组中的每个子报文。

进一步地,所述确定每个报文组的发送顺序包括:

统计在进行子报文发送时,报文组的所有发送顺序集合;

针对所述发送顺序集合中包含的每个候选发送顺序,统计该候选发送顺序下,针对每个子报文发送时,该子报文对应的第一存储空间之前的第二存储空间的存储状态为不可用状态,缓存所述第二存储空间存储的数据的次数;

将所述次数最小的候选发送顺序确定为报文组的发送顺序。

进一步地,当判断所述报文的长度不大于最大报文段长度MSS时,所述方法还包括:

在所述待发送的报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。

本发明实施例提供了一种数据发送装置,应用于电子设备,该装置包括:

存储模块,用于根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度;

第一判断模块,用于判断所述报文的长度是否大于最大报文段长度MSS;

第一划分模块,用于当第一判断模块的判断结果为是时,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS;

第二划分模块,用于将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻;

发送模块,用于针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。

进一步地,所述装置还包括:

第二判断模块,用于判断所述第二存储空间的存储状态是否为可用状态;

所述发送模块,还用于当第二判断模块的判断结果为否时,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文;

所述装置还包括:

状态修改模块,用于将所述子报文对应的第一存储空间的存储状态修改为可用状态。

进一步地,所述发送模块,还用于当第二判断模块的判断结果为是时,在所述第二存储空间中添加所述子报文对应的报文头并发送;

所述状态修改模块,还用于将所述第一存储空间的存储状态修改为可用状态。

进一步地,所述发送模块,还用于确定每个报文组的发送顺序;根据所述发送顺序,依次发送每个报文组中的每个字报文。

进一步地,所述发送模块,具体用于统计在进行子报文发送时,报文组的所有发送顺序集合;针对所述发送顺序集合中包含的每个候选发送顺序,统计该候选发送顺序下,针对每个子报文发送时,该子报文对应的第一存储空间之前的第二存储空间的存储状态为不可用状态,缓存所述第二存储空间存储的数据的次数;将所述次数最小的候选发送顺序确定为报文组的发送顺序。

进一步地,所述发送模块,还用于当用于当所述第一判断模块的判断结果为否时,在所述待发送的报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。

本发明实施例提供一种数据发送方法及装置,该方法包括:根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度;判断所述报文的长度是否大于最大报文段长度MSS,如果是,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS;将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻;针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。由于在本发明实施例中,将子报文划分到至少两个报文组,针对每个报文组中的子报文进行发送,另外针对每个报文组中的每个子报文,只是缓存该子报文对应的第一存储空间之前且相邻的一个报文头长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,因此在数据发送时,针对每个子报文拷贝的数据量大大减小,节约了处理资源,降低了网络延时和功耗。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例1提供的一种数据发送过程示意图;

图2为本发明实施例2提供的一种数据发送过程示意图;

图3为本发明实施例4提供的一种数据发送过程示意图;

图4为本发明实施例5提供的一种数据发送装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例1:

图1为本发明实施例提供的一种数据发送过程示意图,该过程如下:

S101:根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度。

本发明实施例提供的数据发送方法适用于电子设备,该电子设备可以为个人电脑(PC)、手机、平板电脑等,也可以是具有数据发送功能的摄像机、火情监测器等设备。

在本发明实施例中,预设的预留存储空间可以根据报文发送时,为报文添加对应报文头,需要使用的存储空间确定,具体的该预留存储空间的大小不小于一个报文头的长度。因为每种类型的报文的报文头不同,该预留的存储空间大小可以根据待发送的报文的类型确定,也可以采用报文头长度的最大值,例如A类型的报文的报文头长度为20字节,B类型的报文的报文头长度为18字节,A类型的报文的报文头长度大于B类型的报文的报文头长度,根据A类型的报文的报文头长度,确定预留的存储空间大小不小于20字节。

具体的,在接收到待发送的报文后,根据待发送的报文的长度,及预设的预留存储空间的大小之和,确定待发送报文需占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,在存储时,将所述报文的尾部与所述存储空间的尾部对齐,预留存储空间在所述报文占用的存储空间之前且相邻的位置,以便发送时,在该预留存储空间中添加报文头。例如:接收到的待发送的报文长度为20000字节,预设的预留存储空间的大小为20字节,则确定待发送的报文需占用的存储空间的大小为20020字节,将所述接收到的待发送的报文存储到大小为20020字节的存储空间中,在存储时,长度为20000字节的待发送的报文尾部与所述20020字节的存储空间的尾部对齐,预留的20字节的存储空间在所述报文占用的存储空间之前且相邻的位置。

S102:判断所述报文的长度是否大于最大报文段长度MSS,如果是,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS。

因为现有网络通信中报文传输时,整个报文的长度不能大于MTU,而在具体传输时每个报文都会封装报文头,因此在进行报文传输时,每个报文中除去报文头的长度后能承载的报文的长度MSS是一定的,所以若待发送的报文的长度大于MSS,则需要将待发送的报文划分为多个长度不大于MSS的子报文。

具体的,判断待发送的报文的长度是否大于MSS,如果大于,说明需要将所述报文划分为多个子报文,每个报文的长度不大于MSS值。在划分时每个子报文的长度可以相同也可以不同,较佳的,可以使划分的每个子报文的长度都等于MSS,最后一个子报文的长度可以小于MSS。

S103:将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻。

由于在子报文发送的过程中,每发送完成一个子报文后,都需要返回一个子报文发送完成的响应信息,而电子设备每接收到一个响应信息都需要进行处理,从而降低了其进行报文发送的效率,并浪费了大量的处理资源。而将子报文划到报文组中,以报文组为单位发送子报文,当报文组中包含的所有子报文都发送完成后,才返回一个报文组中子报文发送完成的响应信息,可以提高报文的发送效率,并且也可以有效的节省电子设备的处理资源。

因此在本发明实施例中,针对子报文进行了分组处理,具体的,将多个子报文划分到至少两个报文组中,每个报文组包含的子报文不相邻。例如:将待发送的报文划分为16个子报文,每个子报文的序号依次为1、2……15、16,可以将子报文划分到两个报文组,其中一个报文组中包含序号为1、3、5、7、9、11、13、15的子报文,另一个报文组中包含序号为2、4、6、8、10、12、14、16的子报文,也可以将子报文划分到三个报文组,其中一个报文组中包含序号为1、3、6、8、11、13、15的子报文,另一个报文组中包含序号为4、7、10、12、16的子报文,再一个报文组中包含序号为2、5、9、14的子报文,只要每个报文组中包含的任意两个子报文不相邻即可。

较佳的,用户可以根据需求设定每个报文组中包含子报文的最大数量,例如:用户设定的每个报文组中包含的子报文最大数量为4,则可以将上述子报文划分到四个报文组,第一报文组包含序号为1、3、5、7的子报文,第二报文组包含序号为2、4、6、8的子报文,第三报文组包含序号为9、11、13、15的子报文,第四报文组包含序号为10、12、14、16的子报文,只要满足每个报文组中包含的子报文的数量不大于用户设定的最大报文数量且每个报文组中包含的任意两个子报文不相邻即可。

将子报文划分到不同的报文组,以报文组为单位一起发送报文组中包含的子报文,待报文组中包含的子报文都完成发送后,返回一个报文组发送完成的响应信息即可,若是以每个子报文为单位进行发送,每发送完成一个子报文后,就需要返回一个子报文发送完成的响应信息,造成处理资源的浪费,影响报文的发送效率。

S104:针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。

具体的,针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,所述设定的长度等于待发送的报文需要添加报文头的长度,在所述第二存储空间中添加所述子报文对应的报文头,并发送封装后的所述子报文,发送完成后,将缓存的数据还原到第二存储空间。

由于在本发明实施例中,将子报文划分到至少两个报文组,针对每个报文组中的子报文进行发送,另外针对每个报文组中的每个子报文,只是缓存该子报文对应的第一存储空间之前且相邻的一个报文头长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,因此在数据发送时,针对每个子报文拷贝的数据量大大减小,节约了处理资源,降低了网络延时和功耗。

实施例2:

为了进一步减少数据的拷贝量,节约处理资源,在本发明实施例1的基础上,在本发明实施例中,所述缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据之前,所述方法还包括:

判断所述第二存储空间的存储状态是否为可用状态,如果否,进行后续步骤;

发送封装后的所述子报文之后,所述方法还包括:

将所述第一存储空间的存储状态修改为可用状态。

在本发明实施例中可以设置存储空间的存储状态,当存储空间存储有数据时,该存储空间的存储状态为不可用状态,当存储空间没有存储数据时,则该存储空间的存储状态为可用状态,另外该存储空间的存储状态还可以根据该存储空间是否存储有数据,进行动态的修改。

具体的,在缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据之前,通过判断所述第二存储空间的存储状态是否为可用状态,来判断是否需要缓存数据,如果判断结果为否,则说明第二存储空间中存储有数据,为了添加该第一存储空间存储的子报文的报文头,需要缓存第二存储空间的数据。

待发送封装后的所述子报文之后,将该缓存的第二存储空间的数据还原到该第二存储空间,因此该第一存储空间存储的子报文已经发送,此时该第一存储空间未存储数据,因此将第一存储空间的存储状态修改为可用状态,方便后续其他子报文的发送。

进一步地,在本发明实施例中,当待发送的子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间为可用状态时,说明该第二存储空间中未存储数据,无需进行数据的缓存,可以直接使用,因此,在上述各实施例的基础上,当所述第二存储空间的存储状态为可用状态时,所述方法还包括:

直接在所述第二存储空间中添加所述子报文对应的报文头;

发送封装后的所述子报文,并将所述第一存储空间的存储状态修改为可用状态。

具体的,当所述第二存储空间的存储状态为可用状态时,则说明第二存储空间未存储数据,此时为了进一步较少数据拷贝量,并节约处理资源,可以不缓存所述第二存储空间存储的的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送,发送完成后,将所述第一存储空间的存储状态修改为可用状态。

图2所示为本发明实施例提供的一种数据发送过程示意图,包括以下步骤:

S201:根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度。

S202:若所述报文的长度大于最大报文段长度MSS,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS。

S203:将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的子报文之间不相邻。

S204:针对每个报文组中的每个子报文,判断该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储是否为可用状态,如果是,进行S206,如果否,进行S205。

S205:缓存所述第二存储空间的存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,将所述第一存储空间的存储状态修改为可用状态。

S206:直接在所述第二存储空间中添加所述子报文对应的报文头;发送封装后的所述子报文,并将所述第一存储空间的存储状态修改为可用状态。

实施例3:

当将报文划分多个子报文,并将子报文划分到至少两个报文组中后,在确定每个报文组的发送顺序时,可以任意确定,例如如果有三个报文组分别为第一报文组、第二报文组和第三报文组,则可以先发第一报文组中的子报文,再发第二报文组中的子报文,最后发第三报文组中的子报文,此时报文组的发送顺序为第一报文组、第二报文组和第三报文组,当然报文组的发送顺序还可以是第一报文组、第三报文组和第二报文组,或者第二报文组、第三报文组和第一报文组等等。

但是如果某一报文组的子报文发送后,与这些发送完整的子报文相邻,且位于这些子报文之后的子报文再进行发送时,可以直接占用发送完成的子报文的存储空间,而无需进行数据的拷贝。因此为了进一步减少数据拷贝量,节约处理资源,在上述各实施例的基础上,在本发明实施例中,所述缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据之前,所述方法还包括:

确定每个报文组的发送顺序;

根据所述发送顺序,依次发送每个报文组中的每个子报文。

在本发明实施例中,可以根据用户预先设定的发送规则,确定每个报文组的发送顺序,并根据每个报文组的发送顺序依次发送每个报文组中的每个子报文。例如:用户设定的发送规则为,优先发送包含子报文较少的报文组,则根据每个报文组中包含的子报文的数量由小到大排序,确定每个报文组的发送顺序;用户设定的发送规则为,优先发送包含子报文较多的报文组,则根据每个报文组中包含的子报文的数量由大到小排序,确定每个报文组的发送顺序。

为了减少拷贝的数据量,在本发明实施例中,可以选取缓存数据量最少的报文组发送顺序作为报文组的发送顺序,所述确定每个报文组的发送顺序包括:

统计在进行子报文发送时,报文组的所有发送顺序集合;

针对所述发送顺序集合中包含的每个候选发送顺序,统计该候选发送顺序下,针对每个子报文发送时,该子报文对应的第一存储空间之前的第二存储空间的存储状态为不可用状态,缓存所述第二存储空间存储的数据的次数;

将所述次数最小的候选发送顺序确定为报文组的发送顺序。

具体的,统计在进行子报文发送时,报文组的所有候选发送顺序的集合,针对每个候选发送顺序下,每个子报文发送时,该子报文对应的第一存储空间之前的第二存储空间的存储状态为不可用状态,缓存所述第二存储空间存储的数据的次数,选取其中缓存次数最少的候选发送顺序确定为报文组的发送顺序。

具体的,对于报文组所有候选发送顺序的确定及其对应的缓存次数的确定,如下所示:划分后包含三个报文组,其中第一报文组包含序号为1、4、7、10的子报文,第二报文组包含序号为2、5、9、11的子报文,第三报文组包含序号为3、6、10、12的子报文,统计三个报文组不同发送顺序需要缓存的次数,发送顺序为第一报文组、第二报文组、第三报文组,对应的缓存次数为4,发送顺序为第一报文组、第三报文组。第二报文组,对应的缓存次数为8,发送顺序为第二报文组、第三报文组、第一报文组,对应的缓存次数为8,发送顺序为第二报文组、第一报文组、第三报文组,对应的缓存次数为8,发送顺序为第三报文组、第一报文组、第二报文组,对应的缓存次数为8,发送顺序为第三报文组、第二报文组、第一报文组,对应的缓存次数为12,最小的缓存次数为4,确定发送顺序为第一报文组、第二报文组、第三报文组。

实施例4:

当待发送的报文的长度不大于MSS时,不需要将报文划分为子报文进行发送,为了提高数据发送的效率,在上述实施例1的基础上,在本发明实施例中,当判断所述报文的长度不大于最大报文段长度MSS时,所述方法还包括:

在所述待发送的报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。

具体的,当待发送的报文的长度不大于MSS时,在待发送报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。所述第四存储空间位于预设的预留存储空间中,所述留存储空间的大小不小于所述第四存储空间的大小。

图3所示为本发明实施例提供的一种数据发送方法过程示意图,该过程如下:

S301:根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度。

S302:判断所述报文的长度是否大于最大报文段长度MSS,如果是,进行S303,如果否,进行S308。

S303:将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS。

S304:将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的子报文之间不相邻。

S305:针对每个报文组中的每个子报文,判断该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储是否为可用状态,如果否,进行S306,如果是,进行S307。

S306:缓存所述第二存储空间的存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,将所述第一存储空间的存储状态修改为可用状态。

S307:直接在所述第二存储空间中添加所述子报文对应的报文头并发送,将所述第一存储空间的存储状态修改为可用状态。

S308:在所述待发送的报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。

实施例5:

图4为本发明实施例提供的一种数据发送装置结构示意图,该装置包括:

存储模块41,用于根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度;

第一判断模块42,用于判断所述报文的长度是否大于最大报文段长度MSS;

第一划分模块43,用于当第一判断模块的判断结果为是时,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS;

第二划分模块44,用于将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻;

发送模块45,用于针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。

所述装置还包括:

第二判断模块46,用于判断所述第二存储空间的存储状态是否为可用状态;

所述发送模块45,还用于当第二判断模块的判断结果为否时,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文;

所述装置还包括:

状态修改模块47,用于将所述子报文对应的第一存储空间的存储状态修改为可用状态。

所述发送模块45,还用于当第二判断模块的判断结果为是时,在所述第二存储空间中添加所述子报文对应的报文头并发送;

所述状态修改模块47,还用于将所述第一存储空间的存储状态修改为可用状态。

所述发送模块45,还用于确定每个报文组的发送顺序;根据所述发送顺序,依次发送每个报文组中的每个字报文。

所述发送模块45,具体用于统计在进行子报文发送时,报文组的所有发送顺序集合;针对所述发送顺序集合中包含的每个候选发送顺序,统计该候选发送顺序下,针对每个子报文发送时,该子报文对应的第一存储空间之前的第二存储空间的存储状态为不可用状态,缓存所述第二存储空间存储的数据的次数;将所述次数最小的候选发送顺序确定为报文组的发送顺序。

所述发送模块45,还用于当用于当所述第一判断模块的判断结果为否时,在所述待发送的报文所对应的第三存储空间之前且相邻的设定长度的第四存储空间中添加所述报文对应的报文头,并发送封装后的所述报文。

本发明实施例提供一种数据发送方法,应用于电子设备,该方法包括:根据接收到的待发送的报文的长度及预设的预留存储空间的大小,确定所述报文占用的存储空间的大小,并将所述报文存储到对应大小的存储空间,其中存储后所述报文的尾部与所述存储空间的尾部对齐,所述预留存储空间的大小不小于一个报文头的长度;判断所述报文的长度是否大于最大报文段长度MSS,如果是,将所述报文划分为多个子报文,每个子报文的长度不大于所述MSS;将所述多个子报文划分到至少两个报文组中,每个报文组包括至少两个子报文,且每个报文组包含的任意两个子报文不相邻;针对每个报文组中的每个子报文,缓存该子报文对应的第一存储空间之前且相邻的设定长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,其中所述设定长度为报文头长度。由于在本发明实施例中,将子报文划分到至少两个报文组,针对每个报文组中的子报文进行发送,另外针对每个报文组中的每个子报文,只是缓存该子报文对应的第一存储空间之前且相邻的一个报文长度的第二存储空间存储的数据,在所述第二存储空间中添加所述子报文对应的报文头并发送封装后的所述子报文,并将缓存的所述数据还原到所述第二存储空间,因此在数据发送时,针对每个子报文拷贝的数据量大大减小,节约了处理资源,降低了网络延时和功耗。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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