CN110958331A - 一种数据传输方法及终端 - Google Patents
一种数据传输方法及终端 Download PDFInfo
- Publication number
- CN110958331A CN110958331A CN201911383571.7A CN201911383571A CN110958331A CN 110958331 A CN110958331 A CN 110958331A CN 201911383571 A CN201911383571 A CN 201911383571A CN 110958331 A CN110958331 A CN 110958331A
- Authority
- CN
- China
- Prior art keywords
- message
- data
- packet
- data packet
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种数据传输方法及终端,该方法应用于视联网中的接收端。该方法通过缓存队列中的队列元素对接收到的数据包进行管理,一个数据报文的数据包均对应同一队列元素,且随着数据包的接收、缓存、重组对队列元素的信息进行更新,从而便于数据传输过程中问题的排查和维护,且数据包在传输过程中包头信息仅包括包序号、分片序号和数据总长度的信息,精简了数据包包头的数据量、从而简化了数据分片、接收、重组的处理逻辑,能够在数据包一次传输中携带更长的数据报文,节省了资源的占用,提高了数据传输的效率。
Description
技术领域
本发明涉及视联网技术领域,特别是涉及一种数据传输方法及终端。
背景技术
目前,在视联网中进行数据报文传输时,由于不同发送端与接收端间一次传输只能够负载不同固定字节的有效数据,因此,当需要传输的数据报文字节超过该固定字节时,发送端需要对数据报文进行分片发送,在复杂的传输路径中有时甚至需要多次分片以进行正常传输。接收端在对分片得到的报文片重组,以得到分片前的数据报文。
但是,现有的对数据报文进行分片、重组以正常传输的过程中,分片与重组处理逻辑过于复杂。在对报文片封装时,在包头信息中加入了过多的无效标志符,增加了数据报文片和分片重组过程中资源的占用,提高了问题排查和维护的难度,也造成了数据冗余,影响数据传输的效率。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据传输方法和相应的一种终端。
为了解决上述问题,第一方面,本发明实施例公开了一种数据传输方法,所述方法应用于视联网中的接收端,所述方法包括:
接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
根据所述缓存地址,缓存所述数据包;
根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
可选地,所述根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间,包括:
根据所述报文序号,确定所述数据报文对应的队列元素;
根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,包括:
更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
可选地,所述根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址,包括:
根据所述分片序号和所述预置大小,确定所述数据包相对所述缓存起始地址的偏移量;
根据所述偏移量确定所述数据包在所述缓存空间中对应的缓存地址。
可选地,所述根据所述缓存地址,缓存所述数据包之前,所述方法还包括:
当所述分片序号等于所述数据报文的分片数时,根据所述报文总长度和所述分片数确定所述数据包的报文片长度;
当所述分片序号小于所述数据报文的分片数时,根据所述分片序号和所述预置大小,确定所述数据包的报文片长度;
所述根据所述缓存地址,缓存所述数据包,包括:
根据所述报文片长度,在所述缓存地址缓存所述数据包。
可选地,所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,包括:
根据已接收的相同报文序号的数据包数量更新所述报文接收标识;
根据所述报文片长度更新所述接收总长度。
可选地,所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素之后,所述方法还包括:
确定接收总长度等于报文总长度的目标队列元素;
读取所述目标队列元素对应报文序号的所有数据包,组装得到目标数据报文;
对所述目标队列元素进行初始化设置。
第二方面,本发明实施例还公开一种终端,所述终端应用于视联网中,所述终端包括:
数据接收模块,用于接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
缓存分配模块,用于根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
地址确定模块,用于根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
数据缓存模块,用于根据所述缓存地址,缓存所述数据包;
元素更新模块,用于根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
可选地,所述缓存分配模块,包括:
元素确定子模块,用于根据所述报文序号,确定所述数据报文对应的队列元素;
首包判断子模块,用于根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
缓存分配子模块,用于当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
所述缓存分配子模块,还用于当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
所述元素更新模块,还用于更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
可选地,所述地址确定模块,包括:
偏移量确定子模块,用于根据所述分片序号和所述预置大小,确定所述数据包相对所述缓存起始地址的偏移量;
地址确定子模块,用于根据所述偏移量确定所述数据包在所述缓存空间中对应的缓存地址。
可选地,所述终端还包括:
报文片长度确定模块,用于当所述分片序号等于所述数据报文的分片数时,根据所述报文总长度和所述分片数确定所述数据包的报文片长度;
所述报文片长度确定模块,还用于当所述分片序号小于所述数据报文的分片数时,根据所述分片序号和所述预置大小,确定所述数据包的报文片长度。
可选地,所述数据缓存模块,具体用于根据所述报文片长度,在所述缓存地址缓存所述数据包。
可选地,所述元素更新模块,包括:
标识更新子模块,用于根据已接收的相同报文序号的数据包数量更新所述报文接收标识;
长度更新子模块,用于根据所述报文片长度更新所述接收总长度。
可选地,所述终端还包括:
目标元素确定模块,用于确定接收总长度等于报文总长度的目标队列元素;
数据报文组装模块,用于读取所述目标队列元素对应报文序号的所有数据包,组装得到目标数据报文;
元素初始化模块,用于对所述目标队列元素进行初始化设置。
第三方面,本发明实施例还公开一种数据传输装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如第一方面所述的一个或多个的数据传输方法。
第四方面,本发明实施例还公开一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如第一方面所述的数据传输方法。
本发明实施例包括以下优点:
本发明实施例提供的数据传输方法及终端,该方法应用于视联网中的接收端。该方法通过缓存队列中的队列元素对接收到的数据包进行管理,一个数据报文的数据包均对应同一队列元素,且随着数据包的接收、缓存、重组对队列元素的信息进行更新,从而便于数据传输过程中问题的排查和维护,且数据包在传输过程中包头信息仅包括包序号、分片序号和数据总长度的信息,精简了数据包包头的数据量、从而简化了数据分片、接收、重组的处理逻辑,能够在数据包一次传输中携带更长的数据报文,节省了资源的占用,提高了数据传输的效率。
附图说明
图1是本发明的一种视联网的网络结构示意图;
图2是本发明的一种数据传输方法的步骤流程图;
图3是本发明的一种报文片在缓存队列中存储方式的示意图;
图4是本发明的另一种数据传输方法的步骤流程图;
图5是本发明的又一种数据传输方法的步骤流程图;
图6是本发明实施例的再一种数据传输方法的步骤流程图;
图7是本发明的一种终端的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在本发明实施例中,参照图1,示出了本发明的一种视联网的网络结构示意图,如图1所示,该视联网中包括发送端101和接收端102。
其中,所述发送端101和所述接收端102可以为视联网终端。失恋玩该终端可以包括机顶盒机顶盒(SetTopBox,STB),通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备,它可以将压缩的数字信号转成电视内容,并在电视机上显示出来。发送端可以向接收端发送视联网报文包,视联网报文包指一条完整的数据报文,在视联网报文包的报文总长度超过预置大小时,发送端根据预置大小对视联网报文包进行分片处理得到报文片,并将报文片封装得到多个数据包,然后发送端将多个数据包发送给接胡搜段。
接收端接收到数据包后,根据数据包中的信息更新接收端缓存队列中对应的队列元素,从而实现对数据包的管理。根据数据包的信息与队列元素中的信息确定数据包中报文片的缓存地址,并在该地址对报文片进行缓存。
在本发明实施例中,通常发送端先个接收端一次发送的视联网报文包的大小不能超过预置大小。例如,发送端向接收端一次可发送的最大视联网报文包字节数为1024字节,则当发送端需向接收端发送5000字节的数据报文时,需要将待发送的视联网报文包进行分片处理。其中,最大视联网报文包字节数据1024字节减去16位2字节报文序号、16位2字节分片序号和16为2字节报文总长度1018字节作为预置大小,即预置大小为最大视联网报文包的字节数减去封装过程中添加的包头信息的字节数。将5000字节的数据报文片为5个报文片,4个报文片字节数为1018,一个报文片字节数为928。发送端对5个报文片分别进行组装,以获得对应的5个数据包。其中,报文序号用于区分数据包所属的数据报文,分片序号用于区分数据包中报文片在数据报文中的次序,报文总长度用于记录数据报文的总长度,数据包包头信息格式如下表1所示,其中num为报文序号、flag为分片序号、len为报文总长度。
表1数据报文片封装数据包包头信息格式
在本发明实施例中,发送端可以同时向接收端发送多个数据报文的多个数据包,接收端在接收到这些数据包后,能够根据数据包中的信息区分不同数据报文的数据包,以及同一数据报文数据包的顺序,从而对数据包中的报文片进行重组获得完整的多个数据报文,组合后的数据报文对应的队列元素初始化,继续处理其他数据报文的数据包。
例如,发送端需将数据报文A和数据报文B发送给接收端,其中,数据报文A为5000字节,视联网报文B包为3000字节。则将数据报文A可以拆分成(报文片A1,1018字节),(报文片A2,1018字节),(报文片A3,1018字节),(报文片A4,1018字节),(报文片A5,928字节);对上述报文片进行封装加入2字节报文序号、2字节分片序号和2字节报文总长度作为包头信息,得到(数据包A11,1024字节),(数据包A22,1024字节),(数据包A33,1024字节),(数据包A44,1024字节),(数据包A55,934字节);将数据报文B可以拆分成(报文片B1,1018字节),(报文片B2,1018字节),(报文片B3,964字节);对上述报文片进行封装得到(数据包B11,1024字节),(数据包B22,1024字节),(数据包B33,970字节)。接收端会接收到上述10个数据包,当接收端的缓存队列中数据报文A对应的队列元素中记录已接收到A11-A55时,接收端根据分片序号A11-A55,将数据包中的报文片A11-A55进行组合获得数据报文A,并将数据报文A转移至下一程序进行处理。
参照图2,示出了本发明的一种数据传输方法实施例的步骤流程图之一,该方法可以应用于视联网中的接收端,具体可以包括如下步骤:
步骤201、接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
在本发明实施例中,发送端根据预置大小对长度超过预置大小的数据报文进行分片处理得到,对长度小于或等于预置大小的数据报文可以直接进行封装传输,接收端可以根据分片序号识别数据包是否经过分包处理,如当数据包分片序号为0时表示该数据包中保存的是完整的报文数据,没有经过分包处理,当分片序号大于等于1时,便是该数据包中保存的是报文片,需要对数据进行重组。
在本发明实施例中,报文序号用于标记不同的数据报文,可选地,报文序号可以从0开始顺序递增,每发送一个数据报文,其对应的报文序号就加1,为了避免字节过长、数据臃肿,可以设置当报文序号大于16位字节的无符号整数时,报文序号初始化归零重新开始计数,即报文序号的取值范围可以在0至65535(216-1)。
在本发明实施例中,分片序号用于标记同一数据报文不同报文片的次序,对于不同的数据报文其分片序号的取值范围可以是1至分片数,其中,分片数可以是(报文总长度/预置大小)向上取整得到的数值。由于在报文总长度大于预置大小时即对数据报文进行分片,因此,可以看出分片序号的取值范围最小为1至2,具体取决数据报文的于报文总长度。通过在数据包的包头中携带报文序号、分片序号、以及报文总长度可以快速、便捷的确定数据包是否分片、报文片所属数据报文、报文片在所属数据报文中的分片次序、报文片所属数据报文中的次序以及数据报文的分片数等信息。
步骤202、根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
在本发明实施例中,接收端在接收到数据包后可以先存储在接收端的数据区中,数据区中存储有接收端接收到的多数据报文的多数据包,其中,可能包括不同数据报文的多个数据包,或者也可能有重复、损坏的数据包等。接收端可以在缓冲区对数据包中的报文片进行缓存、组合获得多个数据报文,其中,不同数据报文在缓冲区中不同缓存区间中缓存、组合,同一数据报文对应的缓存空间连续、且大小等于数据报文的报文总长度。可选地,根据数据包的包头信息中的报文序号,可以确定该数据包所属的数据报文,从而确定是否为该数据报文分配过缓存空间;根据报文总长度可以确定需要分配的缓存空间的大小,从而确定数据包所属数据报文的缓存空间。
步骤203、根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
在本发明实施例中,缓存空间是根据报文总长度分配给完整的数据报文的缓存空间,包括缓存起始地址、缓存结束地址等,而报文片的长度小于缓存空间的长度,因此,不同报文片的具体缓存地址也需要进行确定。可选地,对于不同报文片来说具体在缓存空间中的缓存地址可以通过分片序号进行确定,由于报文片是数据报文根据预置大小进行分片得到的,因此,可以推断除最后一个报文片外,其他报文片大小为预置大小,而最后一个报文片的大小小于或等于预置大小。通过报文片的分片序号和预置大小,可以得知报文片在原数据报文中的位置,从而得知报文片在缓存空间的缓存地址。
步骤204、根据所述缓存地址,缓存所述数据包;
在本发明实施例中,可以将数据包中的报文片缓存到缓存空间对应的缓存地址,由于接收端接收数据包的顺序可能有所不同,因此,在缓存空间中可能出现数据报文中位置靠后的报文片先缓存、位置靠前的报文片后缓存的现象,此时,对于报文片的缓存顺序不做限定;也可能出现该报文片已缓存过或发生损坏的问题,重复的报文片可以丢弃处理,发生损坏的报文片可以丢弃,根据实际情况,本领域技术人员可以自行设定针对数据包的缓存方案。
步骤205、根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
在本发明实施例中,接收端在接收数据包之前可以预先建立缓存队列,缓存队列中有预设个数的队列元素,每一个队列元素对应管理一个数据报文的数据包,每一个队列元素包括多个元素成员。图3是本发明实施例中缓存队列的结构示意图,参照图3所示,可选地,缓存队列中有CACHE_NUM_MAX个队列元素,从0开始计数一直到(CACHE_NUM_MAX)-1。每一个队列元素的元素成员可以包括32位的指针(void*缓存起始地址buf),以指向缓存空间的缓存起始地址;16位的报文总长度(unit16_t报文总长度buf_len),以记录数据报文的总长度;16位的报文序号(unit16_t报文序号packetNO),以记录队列元素对应数据报文的序号。还可以包括,16位的报文接收标识(unit16_t报文接收标识flag),以记录当前接收该数据报文的报文片的个数;或,16位的接收总长度(unit16_t接收总长度rc_len),以记录当前接收该数据报文的报文片的总长度中的至少一个,在确定队列元素对应的数据包前,队列元素中元素成员均为初始值。
在本发明实施例中,可以根据数据包的包头信息更新队列元素中的元素成员,可选地,可以在接收到数据包时对队列元素中的元素成员进行更新,也可以在对数据包中报文片缓存后再对对应队列元素的元素成员进行更新,以避免错漏。其中,对元素成员进行更新时可以是每接收或每缓存一个数据包中的报文片,报文接收标识加1,接收总长度加报文片长度;缓存起始地址可以是接收到首包后,根据报文总长度与报文序号分配的缓存空间的缓存起始地址,后续接收到的同报文序号的数据包沿用该缓存起始地址。另外,也可以将数据包包头信息中的报文序号以及数据总长度赋值给队列元素中的报文序号以及数据总长度,以便进一步有效管理对应数据报文的数据包。
参照图4示出了本发明实施例的另一种数据传输方法的步骤流程图,该方法可以应用于视联网中的接收端,具体可以包括如下步骤:
步骤401、接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
步骤402、根据所述报文序号,确定所述数据报文对应的队列元素;
步骤403、根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
步骤404、当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
步骤405、当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
步骤406、根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
步骤407、根据所述缓存地址,缓存所述数据包;
步骤408、更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
在本发明实施例中,可以根据报文序号确定缓存队列中数据报文对应的队列元素,由于缓存队列具有预设个数,可选地,当报文序号小于或等于预设个数时,可以将队列元素中报文序号对应位置的队列元素作为数据报文对应的队列元素;当报文序号大于预设个数时,可以将报文序号与预设个数作比求余数,并将队列元素中余数对应位置的队列元素作为数据报文对应的队列元素。如缓存队列中有10个队列元素,当数据包的报文序号为3时,则将缓存队列中的第3个队列元素作为数据报文对应的队列元素,当数据包的报文序号为15时,15与10作比余5,则将缓存队列中第5位的队列元素作为数据报文对应的队列元素。
在本发明实施例中,由于数据包通过视联网传输时可能发生丢包的情况,可能造成接收端长时间无法重组获得完整数据报文。此时,为了提高数据的传输效率,避免数据的累积、冗余,可以适当的对数据进行清理。如缓存队列中有预设个数队列元素,报文序号每超过一次预设个数,则对缓存队列中的全部队列元素初始化设置,同时删除缓存空间中还未组装的报文片。如缓存队列中有10个队列元素,当接收到报文序号为11的数据包时,将10个队列元素的元素成员重新置为初始值;当接收到报文序号为21的数据包时,再次将10个队列元素的元素成员重新置为初始值。
在本发明实施例中,由于队列元素中的元素成员原本均为初始值,因此,在根据报文序号确定对应的队列元素后,如果队列元素中的报文接收标识是初始值,则说明接收端是第一次接收到该报文序号对应的数据包,因此,可以认为该数据包为数据报文的首包。另外,此处所指的首包是指接收端接收到的该数据报文的第一个数据包,不一定是数据报文片时第一个报文片封装成的数据包,由于传输路径、网络状况等差异,可能有数据包先发后至,即首包的分片序号不一定是1。
在本发明实施例中,当数据包是首包时,表明没有为该数据报文分配过缓存空间,此时可以根据数据报文的报文总长度,在缓冲区为数据报文分配对应大小的缓存空间,可以包括缓存起始地址到缓存结束地址。
本发明实施例中,在接收数据包后可以对数据报文对应的队列元素进行更新,如根据接收该数据报文的数据包的数量更新报文接收标识,根据分配的缓存空间的起始地址更新缓存起始地址等。也可以根据首包的长度更新接收总长度。另外,报文序号对应的队列元素中报文接收标识不是初始值时,说明书数据包不是首包,此时,可以直接从队列元素中获取缓存起始地址进行缓存,并对报文接收标识进行更新,根据数据包的长度对接收总长度进行更新等。
在本发明实施例中,当根据报文序号对应的队列元素中报文接收标识确定该数据包不是首包时,可以进一步比较数据包的报文序号与队列元素中报文序号,当两报文序号一致时,可以继续执行后续缓存步骤,当两报文序号不一致时,则认为队列元素中报文序号对应的数据报文未接收的数据包已全部丢失。此时,可以对队列元素进行初始化设置,并删除队列元素中报文序号对应的已缓存的报文片。另外,可以将该数据包作为首包,执行对应的首包缓存步骤。
可选地,所述步骤407之后,所述方法还可以包括:
步骤S11、确定接收总长度等于报文总长度的目标队列元素;
步骤S12、读取所述目标队列元素对应报文序号的所有数据包,组装得到目标数据报文;
步骤S13、对所述目标队列元素进行初始化设置。
在本发明实施例中,当队列元素中接收总长度等于报文总长度时,可以认为该数据报文的数据包均以缓存完毕,此时,可以将该数据报文对应的队列元素作为目标队列元素,并对该目标队列元素对应报文序号的数据包进行组装,以得到目标数据报文。可选地,可以在目标队列元素的缓存起始地址中确定对应的缓存空降,并对缓存空间中的报文片进行组装以获得目标数据报文。之后,可以将得到的目标数据报文发送给数据处理函数进行对应处理,处理完成后对目标队列元素进行初始化设置,将所有元素成员的值置为初始值,以便对新接收的数据包进行处理。
参照图5示出了本发明实施例的又一种数据传输方法的步骤流程图,该方法可以应用于视联网中的接收端,具体可以包括如下步骤:
步骤501、接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
步骤502、根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
步骤503、根据所述分片序号和所述预置大小,确定所述数据包相对所述缓存起始地址的偏移量;
步骤504、根据所述偏移量确定所述数据包在所述缓存空间中对应的缓存地址;
步骤505、根据所述缓存地址,缓存所述数据包;
步骤506、根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
本发明实施例中,在确定数据包在缓存空间中的缓存位置时,可以根据队列元素中,或分配的得到的缓存空间的缓存起始位置进行确认。通常可以认为,分片序号是数据报文中报文片的次序,预置大小是最后一个报文片前所有报文片的固定长度。因此,可选地,可以通过分片序号与预置大小计算该数据包中报文片缓存起始位置相对于缓存空间中缓存起始位置的偏移量,由于最后的分片序号之前所有数据包中报文片的长度应等于预置大小,因此将分片序号减1再乘以预置大小即可得到该偏移量。如数据报文长度为1000字节,根据预置大小100字节分为1到10个报文片,此时,接收端接收到该数据报文的数据包,分片序号为3,则该数据包的偏移量为3减1乘以100字节的200字节;接下来接收到该数据报文的数据包,分片序号为7,则求得偏移量为600字节。
在本发明实施例中,数据包的缓存位置与接收顺序无关,与数据包的分片序号与预置大小有关,当根据分片序号与预置大小计算得到数据包相对缓存起始位置的偏移量后,可以根据该偏移量将数据包中的报文片缓存在起始位置偏移该偏移量后的位置。如将分片序号为3的数据包中的报文片从缓存起始位置后200字节缓存,将分片序号为7的数据包中的报文片从缓存起始位置后600字节开始缓存,从而根据偏移量确定数据包在缓存空间中对应的缓存地址,并将数据包中的报文片缓存在对应的缓存地址。
参照图6示出了本发明实施例的再一种数据传输方法的步骤流程图,该方法可以应用于视联网中的接收端,具体可以包括如下步骤:
步骤601、接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
步骤602、根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
步骤603、根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
步骤604、判断所述分片序号是否等于所述数据报文的分片数;
步骤605、当所述分片序号等于所述数据报文的分片数时,根据所述报文总长度和所述分片数确定所述数据包的报文片长度;
步骤606、当所述分片序号小于所述数据报文的分片数时,根据所述分片序号和所述预置大小,确定所述数据包的报文片长度;
步骤607、根据所述报文片长度,在所述缓存地址缓存所述数据包;
步骤608、根据已接收的相同报文序号的数据包数量更新所述报文接收标识;
步骤609、根据所述报文片长度更新所述接收总长度;所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
在本发明实施例中,由于最后一个数据包中的报文片的长度可能小于或等于预置大小,因此,为了确定本次缓存中接收总长度的增量,需要对数据包是否为数据报文对应的最后一个数据包进行确定。根据数据包的分片序号可以确定数据包是否为数据报文对应的最后一个数据包,当数据包包头的分片序号等于数据报文的分片数时,该数据包即为数据报文对应的最后一个数据包;当数据包包头的分片序号小于分片数时,该数据包不是数据报文对应的最后一个数据包。
在本发明实施例中,数据包为该数据报文对应的最后一个数据包时,可以根据报文总长度和分片数确定数据包的报文片长度,可以是用报文总长度减去分片数减1后与预置大小的乘积;当数据包不为该数据报文对应的最后一个数据包时,该报文片长度即为预置大小。在获得报文片长度后,在缓存空间中该数据包对应的缓存地址开始,缓存对应报文片长度的报文片。可选地,在发送端对数据报文进行分片处理时,可以对该数据包的包头信息作出调整,在包头信息中写入报文序号、分片序号和报文片长度,从而便于最后一个数据包接收长度的读取,以提升数据报文重组的效率;在小概率情况下,数据报文的最后一个数据包最先到了接收端时,也可以通过分片序号确定分片数,并根据报文片长度、分片数和预置大小确定报文总长度。
在本发明实施例中,根据数据包的包头信息更新队列元素时,可以根据已接收的相同报文序号的数据包数量更新报文接收标识,如接收到同一报文序号的三个数据包,分片序号分别为2、5、8,则报文接收标识为3;根据报文片长度更新接收总长度,即将本次缓存的报文片长度作为接收总长度的增量,以确定本次缓存后该数据报文的接收总长度。
以下列出本发明实施例在实际应用中的具体示例,接收端在接收数据包预先创建缓存队列,其中有CACHE_NUM_MAX=10个队列元素,编号为0、1、2、3、······、9。每一个队列元素的元素成员有缓存起始地址buf、报文总长度buf_len、报文接收标识flag、报文序号packetNO、接收总长度rc_len,均为初始值。
发送端需要向接收端发送第一个数据报文,预置大小(FRAG_LEN)为1018字节,第一个数据报文的报文总长度为1000字节,由于数据报文的总长度小于预置大小,因此,直接封装数据包发送,数据包的包头num=0、flag=0、len=1000字节。
发送端需要向接收端发送第二个数据报文,第二个数据报文的报文总长度为3000字节,由于数据报文的总长度大于预置大小,因此,对第二个数据报文进行分片发送。将报文序号从0开始,每发送一个需要进行分片处理的数据报文则加1,当大于16位的无符号整数时,归零循环。
则第二个数据报文的报文序号为1,根据报文总长度3000字节以及预置大小1018字节,确定分片数为(len/FRAG_LEN+len%FRAG_LEN)=3。
按预置大小封装第一片报文片数据包头:num=1,flag=1,len=3000;
按预置大小封装第二片报文片数据包头:num=1,flag=2,len=3000;
按预置大小封装第三片报文片数据包头:num=1,flag=3,len=3000;
其中,第一、第二片报文片长度为1018字节,第三片报文片长度为len-FRAG_LEN*(3-1)=964字节。因此,封装得到的第一、第二个数据包为1024字节,第三个数据包为970字节。
数据分片过程中,拷贝不同报文片的方式为从分片序号减1乘以预置大小的乘积(flag-1)*FRAG_LEN处开始拷贝,最后一片报文片前到预置大小后结束,即拷贝(flag-1)*FRAG_LEN+FRAG_LEN长度的数据报文并进行封装。最后一片报文片则到len-(flag-1)*FRAG_LEN的位置结束拷贝,并进行封装,获得数据包。
当接收端接收到数据包后,首先获取数据包的包头信息,包括报文序号num、分片序号flag和报文总长度len。当数据包的num=0和/或flag=0时,确认该数据包中的数据报文完整,没有分片,可以直接获取完整的数据报文并进行后续处理。
当数据包的num≠0、flag≠0时,该数据包对应的数据报文经过分片处理,此时,如接收到报文序号1对应的第二个数据包,数据包的num=1、flag=2确认该数据包经过分片,根据预置大小1018字节和len=3000字节,确定报文序号1对应的数据报文分片数为3。
根据num查找缓存队列中对应的队列元素,由于1小于10,因此,第一个队列元素0为数据报文对应的队列元素。如果num=15,则计算获得num%CACHE_NUM_MAX=5,则将第五个队列元素4作为数据报文对应的队列元素。
队列元素0的报文接收标识flag=0,即表示接收端还未接收过报文序号为1的数据包,该数据包为对应数据报文的首包。此时,根据数据包的len=3000字节对该数据报文分配缓存空间1至3000字节。并将缓存空间的起始地址1字节赋值给元素成员的buf,将报文总长度3000字节赋值给元素成员的buf_len,将元素成员的报文接收标识设置为1(报文接收标识flag=1),将报文序号赋值给元素成员的packetNO=num=1。
根据数据包包头的分片序号flag将数据包中的报文片缓存到buf,缓存过程如下:
计算缓存的缓存地址,该缓存地址的起始位置为缓存起始地址加偏移量,即1字节加((分片序号flag-1)*FRAG_LEN)等于1019字节。
缓存的报文片长度可以根据分片序号flag和分片数确定,当分片序号flag等于分片数时,即当前数据包为数据报文的最后一个包,此时,报文片长度为(len-(分片序号flag-1)*FRAG_LEN)。如当分片序号为3时,等于分片数3为最后一个数据包,此时报文片长度等于(len-(分片序号flag-1)*FRAG_LEN)=964字节。
当分片序号flag不等于分片数时,报文片长度等于预置大小。
即将数据包中的报文片拷贝至缓存区第1019字节到2036字节,拷贝报文片长度共1018字节。
此时,可以更新队列元素中的接收总长度rc_len=原rc_len+报文片长度=0+1018字节=1018字节。
队列元素0的报文接收标识flag≠0,该数据包不是对应数据报文的首包。此时,可以判断数据包的报文序号与队列元素的报文序号是否一致,由于报文序号对应的队列元素由报文序号整除队列元素后的余数确定,因此,整除同一数字余数相同的报文序号均有可能定位到同一队列元素。当报文序号不一致时,则认为队列元素的报文序号对应的数据报文在传输过程中数据包丢失,此时,可以对队列元素进行初始化设置,并将该数据包作为首包处理。
当报文序号一致时,根据数据包中的分片序号flag将数据包中的报文片缓存到buf,缓存过程如下所示:
如接收到报文序号1对应数据报文的另一个数据包,包头信息为num=1,flag=3,len=3000。缓存地址的起始位置等于1+((flag-1)*FRAG_LEN)=2037字节。分片序号3等于分片数3,报文片长度等于(len-(flag-1)*FRAG_LEN)=964字节。因此,将数据包中的报文数据从2037字节开始拷贝至3000字节。此时,接收总长度rc_len=原rc_len+报文片长度=1018字节+964字节=1982字节。
当接收总长度等于数据报文的报文总长度即rcv_len==buf_len=3000字节时,确定已接收到的完整的数据报文。将重组好的数据报文发送给对应的数据处理函数处理完成后,对队列元素进行初始化设置,以待后续其他数据报文数据包的处理。
综上所述,本发明实施例提供的数据传输方法及终端,该方法应用于视联网中的接收端。该方法通过缓存队列中的队列元素对接收到的数据包进行管理,一个数据报文的数据包均对应同一队列元素,且随着数据包的接收、缓存、重组对队列元素的信息进行更新,从而便于数据传输过程中问题的排查和维护,且数据包在传输过程中包头信息仅包括包序号、分片序号和数据总长度的信息,精简了数据包包头的数据量、从而简化了数据分片、接收、重组的处理逻辑,能够在数据包一次传输中携带更长的数据报文,节省了资源的占用,提高了数据传输的效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图7,示出了本发明的一种终端的结构框图之一。所述终端应用于视联网中,所述终端具体可以为视联网中的接收端,所述终端包括:
数据接收模块701,用于接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
缓存分配模块702,用于根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
地址确定模块703,用于根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
数据缓存模块704,用于根据所述缓存地址,缓存所述数据包;
元素更新模块705,用于根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
可选地,所述缓存分配模块702,包括:
元素确定子模块,用于根据所述报文序号,确定所述数据报文对应的队列元素;
首包判断子模块,用于根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
缓存分配子模块,用于当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
所述缓存分配子模块,还用于当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
所述元素更新模块705,还用于更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
可选地,所述地址确定模块703,包括:
偏移量确定子模块,用于根据所述分片序号和所述预置大小,确定所述数据包相对所述缓存起始地址的偏移量;
地址确定子模块,用于根据所述偏移量确定所述数据包在所述缓存空间中对应的缓存地址。
可选地,所述终端还包括:
报文片长度确定模块,用于当所述分片序号等于所述数据报文的分片数时,根据所述报文总长度和所述分片数确定所述数据包的报文片长度;
所述报文片长度确定模块,还用于当所述分片序号小于所述数据报文的分片数时,根据所述分片序号和所述预置大小,确定所述数据包的报文片长度。
可选地,所述数据缓存模块704,具体用于根据所述报文片长度,在所述缓存地址缓存所述数据包。
可选地,所述元素更新模块705,包括:
标识更新子模块,用于根据已接收的相同报文序号的数据包数量更新所述报文接收标识;
长度更新子模块,用于根据所述报文片长度更新所述接收总长度。
可选地,所述终端还包括:
目标元素确定模块,用于确定接收总长度等于报文总长度的目标队列元素;
数据报文组装模块,用于读取所述目标队列元素对应报文序号的所有数据包,组装得到目标数据报文;
元素初始化模块,用于对所述目标队列元素进行初始化设置。
本发明实施例提供的数据传输方法及终端,该方法应用于视联网中的接收端。该方法通过缓存队列中的队列元素对接收到的数据包进行管理,一个数据报文的数据包均对应同一队列元素,且随着数据包的接收、缓存、重组对队列元素的信息进行更新,从而便于数据传输过程中问题的排查和维护,且数据包在传输过程中包头信息仅包括包序号、分片序号和数据总长度的信息,精简了数据包包头的数据量、从而简化了数据分片、接收、重组的处理逻辑,能够在数据包一次传输中携带更长的数据报文,节省了资源的占用,提高了数据传输的效率。
本发明实施例还公开一种数据传输装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如上述的一个或多个的数据传输方法。
本发明实施例还公开一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如上述的数据传输方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种摄像头的电子聚焦方法和一种摄像头的电子聚焦装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据传输方法,其特征在于,所述方法应用于视联网中的接收端,所述方法包括:
接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
根据所述缓存地址,缓存所述数据包;
根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
2.根据权利要求1所述的方法,其特征在于,所述根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间,包括:
根据所述报文序号,确定所述数据报文对应的队列元素;
根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,包括:
更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
3.根据权利要求1所述的方法,其特征在于,所述根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址,包括:
根据所述分片序号和所述预置大小,确定所述数据包相对所述缓存起始地址的偏移量;
根据所述偏移量确定所述数据包在所述缓存空间中对应的缓存地址。
4.根据权利要求1所述的方法,其特征在于,所述根据所述缓存地址,缓存所述数据包之前,所述方法还包括:
当所述分片序号等于所述数据报文的分片数时,根据所述报文总长度和所述分片数确定所述数据包的报文片长度;
当所述分片序号小于所述数据报文的分片数时,根据所述分片序号和所述预置大小,确定所述数据包的报文片长度;
所述根据所述缓存地址,缓存所述数据包,包括:
根据所述报文片长度,在所述缓存地址缓存所述数据包。
5.根据权利要求4所述的方法,其特征在于,所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,包括:
根据已接收的相同报文序号的数据包数量更新所述报文接收标识;
根据所述报文片长度更新所述接收总长度。
6.根据权利要求1所述的方法,其特征在于,所述根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素之后,所述方法还包括:
确定接收总长度等于报文总长度的目标队列元素;
读取所述目标队列元素对应报文序号的所有数据包,组装得到目标数据报文;
对所述目标队列元素进行初始化设置。
7.一种终端,其特征在于,所述终端应用于视联网中,所述终端包括:
数据接收模块,用于接收来自发送端的数据包,所述数据包为所述发送端对超过预置大小的数据报文进行分片处理所得到;其中,所述数据包携带有包头信息,所述包头信息包括:报文序号、分片序号、以及报文总长度;
缓存分配模块,用于根据所述报文序号和所述报文总长度,分配所述数据报文对应的缓存空间;
地址确定模块,用于根据所述分片序号,确定所述数据包在所述缓存空间中对应的缓存地址;
数据缓存模块,用于根据所述缓存地址,缓存所述数据包;
元素更新模块,用于根据所述包头信息,更新缓存队列中所述数据报文对应的队列元素,所述队列元素包括:缓存起始地址、报文接收标识、以及接收总长度。
8.根据权利要求7所述的终端,其特征在于,所述缓存分配模块,包括:
元素确定子模块,用于根据所述报文序号,确定所述数据报文对应的队列元素;
首包判断子模块,用于根据所述队列元素的报文接收标识,判断所述数据包是否为所述数据报文的首包;
缓存分配子模块,用于当所述数据包是首包时,根据所述报文总长度,分配所述数据报文对应的缓存空间;
所述缓存分配子模块,还用于当所述数据包不是首包时,根据所述队列元素中的缓存起始地址确定所述数据报文对应的缓存空间;
所述元素更新模块,还用于更新所述报文接收标识,根据所述缓存空间的起始地址更新所述缓存起始地址,以及根据所述首包的长度,更新所述接收总长度。
9.一种数据传输装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1至6所述的一个或多个的数据传输方法。
10.一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如权利要求1至6任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911383571.7A CN110958331A (zh) | 2019-12-27 | 2019-12-27 | 一种数据传输方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911383571.7A CN110958331A (zh) | 2019-12-27 | 2019-12-27 | 一种数据传输方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110958331A true CN110958331A (zh) | 2020-04-03 |
Family
ID=69984657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911383571.7A Pending CN110958331A (zh) | 2019-12-27 | 2019-12-27 | 一种数据传输方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110958331A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070801A (zh) * | 2021-11-23 | 2022-02-18 | 北京天融信网络安全技术有限公司 | 报文处理方法、报文传输方法、装置及电子设备 |
CN114490459A (zh) * | 2022-01-27 | 2022-05-13 | 重庆物奇微电子有限公司 | 数据传输方法、装置、设备、接收机和存储介质 |
CN115580587A (zh) * | 2022-12-06 | 2023-01-06 | 北京云脉芯联科技有限公司 | 报文信息处理方法、装置、计算机设备和存储介质 |
CN116074253A (zh) * | 2023-03-06 | 2023-05-05 | 中国人民解放军军事科学院系统工程研究院 | 一种报文链式转发方法及装置 |
CN116781448A (zh) * | 2023-08-17 | 2023-09-19 | 北京芯驰半导体科技有限公司 | 一种can报文防丢失方法、装置、系统、芯片及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795236A (zh) * | 2010-03-31 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 报文保序方法及装置 |
CN101841545A (zh) * | 2010-05-14 | 2010-09-22 | 中国科学院计算技术研究所 | 一种tcp流重组拼包方法和装置 |
CN104040977A (zh) * | 2012-12-28 | 2014-09-10 | 华为技术有限公司 | 缓存报文的方法和装置 |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN109889779A (zh) * | 2019-01-31 | 2019-06-14 | 视联动力信息技术股份有限公司 | 一种报文乱序的处理方法和装置 |
CN110086850A (zh) * | 2019-03-19 | 2019-08-02 | 视联动力信息技术股份有限公司 | 一种文件的处理方法和视联网网盘系统 |
CN110267099A (zh) * | 2019-05-22 | 2019-09-20 | 视联动力信息技术股份有限公司 | 一种基于视联网的数据传输方法和视联网终端 |
-
2019
- 2019-12-27 CN CN201911383571.7A patent/CN110958331A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795236A (zh) * | 2010-03-31 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 报文保序方法及装置 |
CN101841545A (zh) * | 2010-05-14 | 2010-09-22 | 中国科学院计算技术研究所 | 一种tcp流重组拼包方法和装置 |
CN104040977A (zh) * | 2012-12-28 | 2014-09-10 | 华为技术有限公司 | 缓存报文的方法和装置 |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN109889779A (zh) * | 2019-01-31 | 2019-06-14 | 视联动力信息技术股份有限公司 | 一种报文乱序的处理方法和装置 |
CN110086850A (zh) * | 2019-03-19 | 2019-08-02 | 视联动力信息技术股份有限公司 | 一种文件的处理方法和视联网网盘系统 |
CN110267099A (zh) * | 2019-05-22 | 2019-09-20 | 视联动力信息技术股份有限公司 | 一种基于视联网的数据传输方法和视联网终端 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070801A (zh) * | 2021-11-23 | 2022-02-18 | 北京天融信网络安全技术有限公司 | 报文处理方法、报文传输方法、装置及电子设备 |
CN114490459A (zh) * | 2022-01-27 | 2022-05-13 | 重庆物奇微电子有限公司 | 数据传输方法、装置、设备、接收机和存储介质 |
CN115580587A (zh) * | 2022-12-06 | 2023-01-06 | 北京云脉芯联科技有限公司 | 报文信息处理方法、装置、计算机设备和存储介质 |
CN116074253A (zh) * | 2023-03-06 | 2023-05-05 | 中国人民解放军军事科学院系统工程研究院 | 一种报文链式转发方法及装置 |
CN116074253B (zh) * | 2023-03-06 | 2023-06-02 | 中国人民解放军军事科学院系统工程研究院 | 一种报文链式转发方法及装置 |
CN116781448A (zh) * | 2023-08-17 | 2023-09-19 | 北京芯驰半导体科技有限公司 | 一种can报文防丢失方法、装置、系统、芯片及介质 |
CN116781448B (zh) * | 2023-08-17 | 2023-11-07 | 北京芯驰半导体科技有限公司 | 一种can报文防丢失方法、装置、系统、芯片及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110958331A (zh) | 一种数据传输方法及终端 | |
US7142540B2 (en) | Method and apparatus for zero-copy receive buffer management | |
TWI411279B (zh) | 封包聚合的方法與系統 | |
CN109936514B (zh) | 一种报文处理方法和装置 | |
EP2074756B1 (en) | Method, system, and computer program product for resequencing of data segments received over a bonding channel set | |
CN108989286B (zh) | 通用数据流的封装方法、解封装方法及装置 | |
CN110581812A (zh) | 一种数据报文的处理方法和装置 | |
US11316804B2 (en) | Forwarding entry update method and apparatus in a memory | |
CN111447455A (zh) | 直播视频流回放处理方法、装置及计算设备 | |
CN109246036B (zh) | 一种处理分片报文的方法和装置 | |
CN110830460A (zh) | 一种连接建立方法、装置、电子设备及存储介质 | |
KR20220006606A (ko) | 메시지 처리 방법 및 관련 장치 | |
JP6561067B2 (ja) | Mmtにおけるメディアデータの低遅延消費シグナリング及び動作方法及び装置 | |
CN110545230A (zh) | 用于转发vxlan报文的方法和装置 | |
JP2007274056A (ja) | データグラム再組立装置 | |
WO2011145597A1 (ja) | データ通信装置およびデータ通信方法 | |
US20070165661A1 (en) | Information-processing system, reception device, and program | |
CN110784775A (zh) | 一种视频分片缓存方法、装置及视频点播系统 | |
CN112243159A (zh) | 基于dvb的数据处理、读取方法及服务器、终端以及系统 | |
CN113541992A (zh) | 一种数据传输的方法和装置 | |
CN106713170B (zh) | 一种vsm通道的报文分片方法及装置 | |
KR20160123562A (ko) | 데이터 패킷 처리를 위한 수신기 장치 및 수신기 장치에서의 데이터 패킷 처리 방법 | |
CN115942000B (zh) | H.264格式的视频流转码方法及装置、设备及介质 | |
JP2009130853A (ja) | パケットリアセンブル装置およびプログラム | |
CN109413485B (zh) | 数据缓存方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |