基于列传输的数据传输方法、装置、终端设备及介质与流程

未命名 10-18 阅读:154 评论:0


1.本发明适用于通信领域,尤其涉及一种基于列传输的数据传输方法、装置、终端设备及介质。


背景技术:

2.现有技术中,通常采用行传输的方式(即行为最小单元的传输方式)在客户端到服务端之间传输数据,即一个报文中填充一个或多个整行数据,若该报文中填充的最后一行数据长度较长,则无法填充至当前未填满的报文当中,当需要传输的数据量较多时,会存在大量未填满即发送的报文,报文的使用率偏低,导致其单次发送的数据传输长度和效率受限,从客观性能出发,这种方式将体现为相同数据量下,要发送更多批次的报文才能保证数据传输完成,发送时间延长,导致数据传输效率较低。并且,现有行传输的方式不能处理行宽超过报文最大长度的这种场景,无法提供对超长数据的进行兼容传输。
3.因此,如何提高数据传输效率,成为目前亟待解决的问题。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种基于列传输的数据传输方法、装置、终端设备及介质,以解决现有技术中采用行为最小单元填充报文进行数据传输导致传输的报文数量较多,数据传输效率较低的问题。
5.第一方面,提供一种基于列传输的数据传输方法,应用于服务端中,所述数据传输方法包括以下步骤:
6.获取待填充到报文中的当前第i行第j列目标数据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;
7.当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;
8.重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;
9.根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。
10.第二方面,提供一种基于列传输的数据传输方法,应用于客户端中,所述数据传输方法包括以下步骤:
11.接收服务端发送的含有目标数据的当前报文,判断接收的目标数据是否满足预设行数;
12.当判定所述接收的目标数据未满足预设行数时,获取当前报文中当前行各个列的目标数据,判断是否存在部分第一类型数据被截断到下一个报文中;
13.当判定存在所述部分第一类型数据被截断到下一个报文中时,向所述服务端发出新的报文接收请求;
14.重复以上过程,直至判定不存在第一类型数据被截断到下一个报文中。
15.第三方面,提供一种基于列传输的数据传输装置,所述数据传输装置包括:
16.数据传输采集判断模块,用于获取待填充到报文中的当前第i行第j列目标数据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;
17.数据填充模块,用于当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;
18.填充控制模块,用于控制所述采集判断模块和所述数据填充模块,重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;以及用于根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。
19.第四方面,本发明实施例提供一种终端设备,所述终端设备包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于列传输的数据传输方法。
20.第五方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的基于列传输的数据传输方法。
21.本发明与现有技术相比存在的有益效果是:
22.本发明的数据传输方法、装置、终端设备及介质,通过自定义的第一协议格式,以包括两个标识符和数据内容构成数据段的形式,将各个目标数据以列为最小单元进行报文填充,使得一行数据可以不被绑定在同一条报文中进行发送,而是可以被分开在多个批次的报文中进行发送,每个报文中均是在尽可能的将当前行的各列目标数据填满后才进行发送。相对于现有技术,本发明能够最大限度使用报文空间,提升每一帧报文发送的有效数据量,在相同数据量的情况下减少了发送报文的数量,提高报文发送的利用率,数据传输的总时长更短,进而提升数据的传输效率。
附图说明
23.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
24.图1是本发明一实施例提供的一种基于列传输的数据传输方法的一应用环境示意图;
25.图2是本发明一实施例提供的一种基于列传输的数据传输方法的流程示意图;
26.图3是本发明一实施例提供的一种第一类型数据报文填充的示意图;
27.图4是本发明一实施例提供的一种基于列传输的数据传输方法的流程示意图;
28.图4-1是本发明一实施例提供的第一和第二类型数据报文填充的示意图;
29.图5是本发明一实施例提供的基于图4的数据传输方法的流程示意图;
30.图6是本发明一实施例提供的基于图5的数据传输方法的流程示意图;
31.图7是本发明一实施例提供的一种应用于客户端的数据传输方法的流程示意图;
32.图8是本发明一实施例提供的基于图7的数据传输方法的流程示意图;
33.图9是本发明一实施例提供的一种数据传输装置的结构示意图;
34.图10是本发明一实施例提供的另一种数据传输装置的结构示意图;
35.图11是本发明一实施例提供的一种终端设备的结构示意图。
具体实施方式
36.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
37.应当理解,当在本发明说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
38.还应当理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
39.如在本发明说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0040]
另外,在本发明说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0041]
在本发明说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本发明的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0042]
应理解,以下实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0043]
为了说明本发明的技术方案,下面通过具体实施例来进行说明。
[0044]
本发明一实施例提供的一种基于列传输的数据传输方法,可应用在如图1的应用环境中,其中,客户端与服务端进行通信。其中,客户端包括但不限于掌上电脑、桌上型计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、
云端终端设备、个人数字助理(personal digital assistant,pda)等终端设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0045]
参见图2,是本发明一实施例提供的一种基于列传输的数据传输方法的流程示意图,上述数据传输方法可以应用于图1中的服务端,服务端对应的计算机设备连接相应的数据库、规则库等,以获取数据库中相应的数据。上述计算机设备还可以连接客户端,以采集客户端用户发送的请求以及向客户端发送报文。如图2所示,基于列传输的数据传输方法可以包括以下步骤:
[0046]
步骤s201,获取待填充到报文中的当前第i行第j列目标数据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;
[0047]
其中,待填充到报文中的目标数据为n行m列,其中需要按照一定顺序依次获取第i行第j列目标数据,其中i=1,2,...,n;j=1,2,...,m;例如,先获取第1行第1列数据,判断该目标数据是否为第一类型数据。
[0048]
本步骤中,第一类型数据是指数据长度不超过第一预设值的数据,即普通数据;当目标数据的长度大于第二预设值时,该目标数据为第二类型数据,即超长数据,其中第一预设值和第二预设值可根据具体情况设置,需要特别指出,本步骤中的第一预设值小于或等于第二预设值,也就是普通数据的数据长度小于超长数据的数据长度。
[0049]
步骤s202,当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;
[0050]
其中,第一协议格式下一个数据段的数据结构如下表所示:
[0051][0052]
上表中,len表示的是第一标识符,longlen表示的是第二标识符,data表示的是具体数据内容。
[0053]
在一实施方式中,上述第一标识符可以为第二类型数据的占位符0xfe,用于表示超长数据;第二标识符则表示data内的数据长度,例如该数据长度最大可以为32767。
[0054]
在一实施方式中,上述第一标识符还可以为长度指示符0xfd,用于表示使用第二标识符表示数据长度;对应的,第二标识符则表示data内的数据长度。在其他实施方式中,上述第一标识符还可以为长度表示符,例如为《0xfd,用于表示data内的数据长度,此时第二标识符的字段则省略。
[0055]
步骤s203,重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;
[0056]
其中,在重复上述步骤s201和步骤s202的数据获取和填充过程中,数据获取和填充的预设数据行列顺序可以先行后列的方式,即先获取和填充第1行第1列的目标数据,再获取和填充第1行第2列的目标数据,以此类推,直到获取第1行第m列的目标数据;然后再从第2行第1列到第2行第m列的顺序,依次获取和填充第2行中各列的目标数据;直到获取和填充第n行各列的目标数据。
[0057]
步骤s204,根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。
[0058]
举例说明,以三行三列结果集数据(即目标数据)为例,如图3所示,其中三列都是第一类型数据,即普通数据。按照上述步骤s201至步骤s203,分别填充第一行第一列、第一行第二列、第一行第三列的目标数据,直到填充至第二行第一列的目标数据后第一个报文被填满,然后打包发送该报文;然后执行步骤s204,分别填充第二行第二列、第二行第三列、第三行第一列和第三行第二列的目标数据至第二个报文,发送第二个报文;最后剩余的第三行第三列的目标数据填充至第三个报文中,发送该报文即可。
[0059]
通过图3,可以展示可能出现的每一行目标数据在报文中截断的情况,即第二行的目标数据分成了两部分,分别填充至第一个报文和第二个报文中进行先后发送;第二行的目标数据也分成两部分,分别填充至第二个报文和第三个报文中进行先后发送。
[0060]
本实施例的数据传输方法,通过自定义的第一协议格式,以包括两个标识符和数据内容构成数据段的形式,将各个目标数据以列为最小单元进行报文填充,使得一行数据可以不被绑定在同一条报文中进行发送,而是可以被分开在多个批次的报文中进行发送,每个报文中均是在尽可能的将当前行的各列目标数据填满后才进行发送。相对于现有技术,本发明能够最大限度使用报文空间,提升每一帧报文发送的有效数据量,在相同数据量的情况下减少了发送报文的数量,提高报文发送的利用率,数据传输的总时长更短,进而提升数据的传输效率。
[0061]
参见图4,是本发明一实施例提供的一种基于列传输的数据传输方法的流程示意图,在图2中步骤s201之后,该数据传输方法可以包括以下步骤:
[0062]
步骤s401,当判定所述第i行第j列目标数据为第二类型数据,所述第二类型数据的长度大于所述第一类型数据的长度;将所述第i行第j列目标数据按照设定的第二协议格式填充至所述报文中;按照所述第二协议格式的第二类型数据包括至少两个数据段和一个数据结束标识符;
[0063]
其中,一种第二协议格式的第二类型数据结构可以如下表所示:
[0064][0065]
上表中表示第二类型数据包括两个数据段和一个数据结束标识符0,其中每个数据段的结构参见前一实施例步骤s202中的记载,本实施例不再赘述。在其他实施方式中,第二类型数据还可以包括三个及三个以上的数据段,数据段数量可以根据具体需求进行设置。
[0066]
步骤s402,在填充所述第二类型数据的数据段过程中,判定所述报文被填满时,发送所述报文;并在下一报文中继续填充所述第二类型数据的剩余数据段和所述数据结束标识符。
[0067]
其中,在当前报文内填充第二类型数据的数据段过程中,很可能遇到只填充了第二类型数据的部分数据段,该报文已被填充完毕;因此,需要在填充下一报文时,继续填充剩余的数据段,以及填充用于表示第二类型数据结束的标识符。
[0068]
举例说明,如图4-1所示,在填充完第一行第一列的目标数据之后,根据图2中的步
骤s201,能够确定第一行第二列目标数据不是第一类型数据,而是第二类型数据(即超长数据),填充第二类型数据的占位符0xfe,继续判断并填充第一行第三列目标数据,然后在当前行最后一列的目标数据填充完毕之后,执行上述步骤s401和步骤s402,在填充完第一行第二列目标数据的数据段1之后,第一个报文随即填满,发送该报文;然后在第二个报文当中继续填充第一行第二列目标数据的剩余数据段,即数据段2、数据段3和结束符0。当第一行的所有目标数据(第一类型数据和第二类型数据)均填充完毕之后,继续在第二个报文中填充第二行各列的第一类型数据和第二类型,填充方式与第一行各列的数据填充方式相同,不再赘述。
[0069]
本实施例的数据传输方法,在目标数据为第二类型的超长数据时,通过自定义的第二协议格式,以包括至少两个数据段的形式,来扩展以列为最小单元进行报文填充和传输的上限,使得超长数据可以不被绑定在同一条报文中进行发送,而是可以被分开在多个批次的报文中进行发送,每个报文中均是在尽可能的将当前行超长数据的各个数据段填满后才进行发送。本发明可以将业务自定义报文的大小和一行一列数据的大小解耦,使协议不再受到自定义报文上限的约束,避免了行传输业务报文大小和数据长度规格耦合的情况,从根本上解决了数据长度受到报文大小制约的问题,进而提升数据的传输效率。
[0070]
参见图5,在一实施例中,基于图4中的步骤s401,当判定所述第i行第j列目标数据为第二类型数据,将所述第i行第j列目标数据按照设定的第二协议格式填充至所述报文中,具体包括:
[0071]
步骤s501,设置所述第二类型数据的占位符标识,并填充至所述报文中;
[0072]
举例说明,如图4-1所示,若判定第一行第二列目标数据为第二类型数据,则设置占位符标识0xfe,填充到第一个报文中;当判定第二行第二列的目标数据为第二类型数据,则设置占位符标识0xfe,填充到第二个报文中的第二行第一列的目标数据之后;当判定第三行第二列的目标数据为第二类型数据,由于第二报文中的数据已经填满,则设置占位符标识0xfe,填充到第三个报文中。
[0073]
步骤s502,判断当前行除了所述第二类型数据外剩余列的目标数据是否已填充完毕;
[0074]
举例说明,如图4-1所示,以第一行表示当前行为例,在填充设置占位符标识0xfe,填充到第一个报文之后,能够判断出当前行除了所述第二类型数据外还存在第一行第三列的目标数据没有填充,返回至图2中的步骤s201进行判断,若判定是第一类型数据,则按照步骤s202至步骤s204进行执行;若判定是第二类型数据,则按照上述步骤s501和步骤s502进行执行,直到判定当前行除了所述第二类型数据外剩余列的目标数据均已填充完毕。
[0075]
步骤s503,当判定已填充完毕时,判断是否存在未填充的第二类型数据;
[0076]
举例说明,如图4-1所示,根据上述步骤s502,已经判定第一行除了所述第二类型数据外剩余列的目标数据均已填充完毕,然后执行上述步骤s503,能够判定还存在第一行第二列的第二类型数据(包括数据段1、数据段2和数据段3,以及结束符0)没有填充。
[0077]
步骤s504,当判定存在所述未填充的第二类型数据时,判断当前报文是否已填满;
[0078]
举例说明,如图4-1所示,根据前面的步骤s503,可以判定还存在第一行第二列的第二类型数据包括数据段1、数据段2和数据段3,以及结束符0没有填充。然后根据报文中的数据填充情况,可以判断出第一个报文还没有填满。
[0079]
步骤s505,若判定当前报文没有填满时,以最大字节为单位填充所述第二类型数据至所述当前报文,直到所述当前报文已填满或者所述第二类型数据已填充完毕。
[0080]
举例说明,如图4-1所示,根据前面的步骤s503,可以判断出第一个报文还没有填满,然后继续向第一个报文中填充第一行第二列的各个数据段,当填充完数据段1之后,第一个报文随机填满,也就是并没有在第一个报文中填满第一行第二列的所有数据段。
[0081]
在另一实施方式中,如图4-1所示,在第二行第三列数据填充到第三个报文之后,经过上面的步骤s503至步骤s505,向第三个报文中填充第二行第二列的各个数据段,直到该第二行第二列的所有数据段填充完毕。
[0082]
本实施例的数据传输方法,当待传输的列数据长度超过客户自定义的报文长度上限时,提供了一种流机制,用于兼容任何可能长度的第二类型数据的填充和传输。并且,本发明支持以命令字为基础的多种功能的自定义通讯协议,允许数据库客户端和服务端之间以自定义的形式进行数据传输。
[0083]
参见图6,在一实施例中,基于图5的步骤s502,当判定除了所述第二类型数据外的存在剩余列的目标数据没有填充完毕之后,还包括以下步骤:
[0084]
步骤s601,获取并判断所述剩余列的目标数据是否为第二类型数据;
[0085]
其中,可以根据剩余列的目标数据长度,判断数据类型,具体判断方法可以为:设置长度阈值,数据长度超过该长度阈值的是第二类型数据;不超过该长度阈值的是第一类型数据。
[0086]
步骤s602,若判定为不是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则将所述剩余列的目标数据按照所述第一协议格式填充至所述当前报文;
[0087]
其中,根据以上步骤s601,通过目标数据的数据长度小于长度阈值的比较结果,可以判定剩余列的目标数据为第一类型数据,即不是第二类型数据。然后根据当前报文中的数据填充情况,判别该报文是否已经填满,在没有填满的情况下,依次将剩余的各列目标数据进行相应填充。
[0088]
步骤s603,若判定为是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则返回至“设置所述第二类型数据的占位符标识,并填充至所述报文中”的步骤。
[0089]
其中,根据以上步骤s601,通过目标数据的数据长度大于长度阈值的比较结果,可以判定剩余列的目标数据为第二类型数据,并且在判定当前报文没有填满时,返回执行图5中的步骤s501至步骤s505。
[0090]
本实施例的数据传输方法,优先保证了第一类型数据在当前报文中的数据填充,在当前行中所有第一类型数据填充完毕之后,再填充当前行的第二类型数据。
[0091]
在一实施例中,基于图2中的步骤s203,用于进行数据填充的数据行列顺序可以包括:
[0092]
先填充第一行的各列目标数据,再填充第二行的各列目标数据,以此类推,最后填充最后一行的各列目标数据。
[0093]
其中,填充第一行的各列目标数据,可以为优先填充第一行的各列第一类型数据,然后填充第一行的各列第二类型数据;第二行的各列目标数据至最后一行的各列目标数据均可以按照第一类型数据优先填充、第二类型数据后填充的方式进行。
[0094]
参见图7,是本发明一实施例提供的一种基于列传输的数据传输方法的流程示意
图,上述数据传输方法可以应用于图1中的客户端,该数据传输方法可以包括以下步骤:
[0095]
步骤s701,接收服务端发送的含有目标数据的当前报文,判断接收的目标数据是否满足预设行数;
[0096]
其中,在步骤s701中,需要接收前面任一实施例中服务端发送的报文,客户端接收并解析报文,对解析出来的目标数据进行判断。
[0097]
步骤s702,当判定所述接收的目标数据未满足预设行数时,获取当前报文中当前行各个列的目标数据,判断是否存在部分第一类型数据被截断到下一个报文中;
[0098]
其中,可以拷贝当前报文中的第一类型数据到用户缓冲区,如果当前数据被截断到下一个报文,则向服务端请求新报文后拷贝,拷贝过程中如果遇到0xfe占位符,则暂时跳过。
[0099]
步骤s703,当判定存在所述部分第一类型数据被截断到下一个报文中时,向所述服务端发出新的报文接收请求;
[0100]
步骤s704,重复以上过程,直至判定不存在第一类型数据被截断到下一个报文中。
[0101]
本实施例的应用于客户端的数据传输方法,与以上任一实施例中应用于服务端的数据传输方法相配合,客户端负责获取服务端发送的含有目标数据的报文,然后拷贝报文中的目标数据到用户的绑定缓冲区。
[0102]
参见图8,在一实施例中,在图7所示的步骤s702之后,该数据传输方法还包括以下步骤:
[0103]
步骤s801,当判定不存在第一类型数据被截断到下一个报文中时,判断当前行目标数据的行尾是否存在第二类型数据;
[0104]
步骤s802,当判定当前行目标数据的行尾存在第二类型数据时,获取当前报文内的第二类型数据;判断当前行目标数据中的第二类型数据是否获取完毕;
[0105]
步骤s803,当判定所述第二类型数据没有获取完毕时,向所述服务端发出新的报文接收请求,并获取新的报文内的第二类型数据,直至判定第二类型数据以及获取完毕,返回至所述“判断接收的目标数据是否满足预设行数”的步骤。
[0106]
其中,如果当前行有第二类型数据,则以数据段为单位从报文中拷贝数据到用户缓冲区,如果判定当前第二类型数据被截断到下一个报文,则向服务端请求新报文后拷贝新的数据段,直到获取到第二类型数据的结束符0为止。
[0107]
本发明实施例的应用于客户端和服务端之间的数据传输方法,支持以命令字为基础的多种功能的自定义通讯协议,允许数据库客户端和服务端之间以自定义的形式进行数据传输;支持任意长度数据,任意自定义报文长度组合的目标数据传输,数据传输性能高于传统的行传输方式。
[0108]
对应于上文实施例的应用于服务端的数据传输方法,图9示出了本发明一实施例提供的基于列传输的数据传输装置的结构框图,上述数据传输装置应用于服务端,服务端通过预设的应用程序接口连接目标数据库。在目标数据库被驱动运行以执行相应的任务时,会产生对应的任务日志,通过api可以采集到上述任务日志。为了便于说明,仅示出了与本发明实施例相关的部分。
[0109]
参见图9,该数据传输装置包括:
[0110]
数据传输采集判断模块91,用于获取待填充到报文中的当前第i行第j列目标数
据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;
[0111]
第一类型数据填充模块92,用于当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;
[0112]
第一填充控制模块93,用于控制所述采集判断模块和所述数据填充模块,重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;以及用于根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。
[0113]
可选的是,上述数据传输装置还包括:
[0114]
第二类型数据填充模块,用于当判定所述第i行第j列目标数据为第二类型数据,所述第二类型数据的长度大于所述第一类型数据的长度;将所述第i行第j列目标数据按照设定的第二协议格式填充至所述报文中;按照所述第二协议格式的第二类型数据包括至少两个数据段和一个数据结束标识符;
[0115]
第二填充控制模块,用于在填充所述第二类型数据的数据段过程中,判定所述报文被填满时,发送所述报文;并在下一报文中继续填充所述第二类型数据的剩余数据段和所述数据结束标识符。
[0116]
可选的是,上述第二类型数据填充模块包括:
[0117]
占位符生成填充单元,用于设置所述第二类型数据的占位符标识,并填充至所述报文中;
[0118]
第一判断单元,用于判断当前行除了所述第二类型数据外剩余列的目标数据是否已发送完毕;
[0119]
第二判断单元,用于当判定已发送完毕时,判断是否存在未发送的第二类型数据;
[0120]
第三判断单元,用于当判定存在所述未发送的第二类型数据时,判断当前报文是否已填满;
[0121]
第一填充单元,用于若判定当前报文没有填满时,以最大字节为单位填充所述第二类型数据至所述当前报文、直到所述当前报文已填满或者所述第二类型数据已填充完毕。
[0122]
可选的是,上述第二类型数据填充模块还包括:
[0123]
第四判断单元,用于获取并判断所述剩余列的目标数据是否为第二类型数据;
[0124]
第二填充单元,用于若判定为不是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则将所述剩余列的目标数据按照所述第一协议格式填充至所述当前报文;
[0125]
第五判断单元,用于若判定为是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则返回至所述占位符生成填充单元。
[0126]
可选的是,所述预设的数据行列顺序包括:
[0127]
先填充第一行的各列目标数据,再填充第二行的各列目标数据,以此类推,最后填充最后一行的各列目标数据。
[0128]
对应于上文实施例的应用于客户端的数据传输方法,图10示出了本发明一实施例提供的基于列传输的数据传输装置的结构框图,上述数据传输装置应用于客户端。为了便于说明,仅示出了与本发明实施例相关的部分。
[0129]
参见图10,该数据传输装置包括:
[0130]
数据采集判断模块101,用于接收服务端发送的含有目标数据的当前报文,判断接收的目标数据是否满足预设行数;
[0131]
数据截断判断模块102,用于当判定所述接收的目标数据未满足预设行数时,获取当前报文中当前行各个列的目标数据,判断是否存在部分第一类型数据被截断到下一个报文中;
[0132]
第一报文请求模块103,用于当判定存在所述部分第一类型数据被截断到下一个报文中时,向所述服务端发出新的报文接收请求;
[0133]
控制模块104,用于控制重复以上过程,直至判定不存在第一类型数据被截断到下一个报文中。
[0134]
可选的是,上述数据传输装置还包括:
[0135]
第二类型数据判断模块,用于当判定不存在第一类型数据被截断到下一个报文中时,判断当前行目标数据的行尾是否存在第二类型数据;
[0136]
数据提取判断模块,用于当判定当前行目标数据的行尾存在第二类型数据时,获取当前报文内的第二类型数据;判断当前行目标数据中的第二类型数据是否获取完毕;
[0137]
第二报文请求模块,用于当判定所述第二类型数据没有获取完毕时,向所述服务端发出新的报文接收请求,并获取新的报文内的第二类型数据,直至判定第二类型数据以及获取完毕,返回执行所述数据采集判断模块。
[0138]
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0139]
图11为本发明一实施例提供的一种终端设备的结构示意图。如图11所示,该实施例的终端设备包括:至少一个处理器(图11中仅示出一个)、存储器以及存储在存储器中并可在至少一个处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意各个数据传输方法实施例中的步骤。
[0140]
该终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图5仅仅是终端设备的举例,并不构成对终端设备的限定,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括网络接口、显示屏和输入装置等。
[0141]
所称处理器可以是cpu,该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0142]
存储器包括可读存储介质、内存储器等,其中,内存储器可以是终端设备的内存,内存储器为可读存储介质中的操作系统和计算机可读指令的运行提供环境。可读存储介质
可以是终端设备的硬盘,在另一些实施例中也可以是终端设备的外部存储设备,例如,终端设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器还可以既包括终端设备的内部存储单元也包括外部存储设备。存储器用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,该其他程序如计算机程序的程序代码等。存储器还可以用于暂时地存储已经输出或者将要输出的数据。
[0143]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质至少可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0144]
本发明实现上述实施例方法中的全部或部分流程,也可以通过一种计算机程序产品来完成,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述方法实施例中的步骤。
[0145]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0146]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0147]
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或
单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0148]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0149]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

技术特征:
1.一种基于列传输的数据传输方法,应用于服务端中,其特征在于,所述方法包括以下步骤:获取待填充到报文中的当前第i行第j列目标数据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。2.根据权利要求1所述的基于列传输的数据传输方法,其特征在于,所述数据传输方法还包括以下步骤:当判定所述第i行第j列目标数据为第二类型数据,所述第二类型数据的长度大于所述第一类型数据的长度;将所述第i行第j列目标数据按照设定的第二协议格式填充至所述报文中;按照所述第二协议格式的第二类型数据包括至少两个数据段和一个数据结束标识符;在填充所述第二类型数据的数据段过程中,判定所述报文被填满时,发送所述报文;并在下一报文中继续填充所述第二类型数据的剩余数据段和所述数据结束标识符。3.根据权利要求2所述的基于列传输的数据传输方法,其特征在于,当判定所述第i行第j列目标数据为第二类型数据,将所述第i行第j列目标数据按照设定的第二协议格式填充至所述报文中包括:设置所述第二类型数据的占位符标识,并填充至所述报文中;判断当前行除了所述第二类型数据外剩余列的目标数据是否已填充完毕;当判定已填充完毕时,判断是否存在未填充的第二类型数据;当判定存在所述未填充的第二类型数据时,判断当前报文是否已填满;若判定当前报文没有填满时,以最大字节为单位填充所述第二类型数据至所述当前报文,直到所述当前报文已填满或者所述第二类型数据已填充完毕。4.根据权利要求3所述的基于列传输的数据传输方法,其特征在于,当判定除了所述第二类型数据外的存在剩余列的目标数据没有填充完毕之后,还包括以下步骤:获取并判断所述剩余列的目标数据是否为第二类型数据;若判定为不是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则将所述剩余列的目标数据按照所述第一协议格式填充至所述当前报文;若判定为是第二类型数据,则判断当前报文是否已填满;若判定为没有填满,则返回至“设置所述第二类型数据的占位符标识,并填充至所述报文中”的步骤。5.根据权利要求2所述的基于列传输的数据传输方法,其特征在于,所述预设的数据行列顺序包括:先填充第一行的各列目标数据,再填充第二行的各列目标数据,以此类推,最后填充最
后一行的各列目标数据。6.一种基于列传输的数据传输方法,应用于客户端中,其特征在于,所述数据传输方法包括以下步骤:接收服务端发送的含有目标数据的当前报文,判断接收的目标数据是否满足预设行数;当判定所述接收的目标数据未满足预设行数时,获取当前报文中当前行各个列的目标数据,判断是否存在部分第一类型数据被截断到下一个报文中;当判定存在所述部分第一类型数据被截断到下一个报文中时,向所述服务端发出新的报文接收请求;重复以上过程,直至判定不存在第一类型数据被截断到下一个报文中。7.根据权利要求6所述的基于列传输的数据传输方法,其特征在于,所述数据传输方法还包括以下步骤:当判定不存在第一类型数据被截断到下一个报文中时,判断当前行目标数据的行尾是否存在第二类型数据;当判定当前行目标数据的行尾存在第二类型数据时,获取当前报文内的第二类型数据;判断当前行目标数据中的第二类型数据是否获取完毕;当判定所述第二类型数据没有获取完毕时,向所述服务端发出新的报文接收请求,并获取新的报文内的第二类型数据,直至判定第二类型数据以及获取完毕,返回至所述“判断接收的目标数据是否满足预设行数”的步骤。8.一种基于列传输的数据传输装置,其特征在于,所述数据传输装置包括:采集判断模块,用于获取待填充到报文中的当前第i行第j列目标数据,判断所述第i行第j列目标数据是否为第一类型数据;其中i和j为正整数;数据填充模块,用于当判定所述第i行第j列目标数据为第一类型数据,将所述第i行第j列目标数据按照设定的第一协议格式填充至所述报文中;按照所述第一协议格式的第一类型数据包括一个数据段,所述数据段包括:用于表征数据类型的第一标识符,用于表征数据长度的第二标识符,以及具体的数据内容;填充控制模块,用于控制所述采集判断模块和所述数据填充模块,重复以上数据填充过程,按照预设的数据行列顺序,在所述报文中填充下一目标数据,直到填充至某一行某一列的目标数据后所述报文被填满,发送所述报文;以及用于根据所述数据填充过程填充下一报文,直到按照所述预设的数据行列顺序,使每一行每一列的目标数据均填充至对应的报文当中,发送所述下一报文。9.一种终端设备,其特征在于,所述终端设备包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的基于列传输的数据传输方法。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的基于列传输的数据传输方法。

技术总结
本发明涉及一种基于列传输的数据传输方法、装置、终端设备及介质。该方法通过自定义的第一协议格式,以包括两个标识符和数据内容构成数据段的形式,将各个目标数据以列为最小单元进行报文填充,使得一行数据可以不被绑定在同一条报文中进行发送,而是可以被分开在多个批次的报文中进行发送,每个报文中均是在尽可能的将当前行的各列目标数据填满后才进行发送。相对于现有技术,本发明能够最大限度使用报文空间,提升每一帧报文发送的有效数据量,在相同数据量的情况下减少了发送报文的数量,提高报文发送的利用率,数据传输的总时长更短,进而提升数据的传输效率。进而提升数据的传输效率。进而提升数据的传输效率。


技术研发人员:吴良智 冯皓博
受保护的技术使用者:深圳计算科学研究院
技术研发日:2023.08.03
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐