CN115150383A - 文件发送方法、设备及计算机可读存储介质 - Google Patents
文件发送方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115150383A CN115150383A CN202110351236.XA CN202110351236A CN115150383A CN 115150383 A CN115150383 A CN 115150383A CN 202110351236 A CN202110351236 A CN 202110351236A CN 115150383 A CN115150383 A CN 115150383A
- Authority
- CN
- China
- Prior art keywords
- file
- sending
- thread
- fragmented
- target
- 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.)
- Granted
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/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本申请实施例适用于通信技术领域,提供一种文件发送方法、设备及计算机可读存储介质。文件发送方法包括:通过N个第一线程同时发送N个分片文件,N为大于1的整数;接收文件接收设备发送的每个分片文件的反馈信息;根据每个分片文件的反馈信息确定每个分片文件的发送进度;若确定N个分片文件中存在目标分片文件,则通过第二线程发送目标分片文件的剩余部分,并通过目标分片文件对应的第一线程发送新的分片文件;目标分片文件的发送进度大于预设进度值。通过设置第二线程,确保了第一线程中新老分片文件的及时置换,提高了文件发送速率。
Description
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种文件发送方法、设备及计算机可读存储介质。
背景技术
随着通信技术的发展,基于局域网、近场通信等端到端传输的应用,文件传输的场景日益增多。其中,用户对大文件传输的要求更高。
目前,通常采用用户数据包协议(user datagram protocol,UDP)传输大文件。但是,当通信环境不稳定,存在丢包、抖动等问题时,重传数据包增多,会导致文件传输速率降低,甚至掉坑。
发明内容
本申请实施例提供一种文件发送方法、设备及计算机可读存储介质,提高了文件发送速率。
第一方面,提供了一种文件发送方法,包括:通过N个第一线程同时发送N个分片文件,N为大于1的整数;接收文件接收设备发送的每个分片文件的反馈信息;根据每个分片文件的反馈信息确定每个分片文件的发送进度;若确定N个分片文件中存在目标分片文件,则通过第二线程发送目标分片文件的剩余部分,并通过目标分片文件对应的第一线程发送新的分片文件;目标分片文件的发送进度大于预设进度值。
第一方面提供的文件发送方法,文件发送设备设置两种线程,称为第一线程(本申请实施例中的发送线程)和第二线程(本申请实施例中的重传线程)。发送线程有多个。当发送线程中分片文件的发送进度大于预设进度值时,将该分片文件未发送的剩余部分切换到重传线程,通过重传线程继续发送,确保了发送线程中新老分片文件的及时置换,提高了文件发送速率,提高了带宽利用率。
一种可能的实现方式中,第二线程的发送优先级高于第一线程的发送优先级。
一种可能的实现方式中,通过第二线程发送目标分片文件的剩余部分,并通过目标分片文件对应的第一线程发送新的分片文件之前,还包括:确定第二线程对应的内存区域的使用率小于预设阈值。
一种可能的实现方式中,通过第一线程发送分片文件,包括:将分片文件读取到第一线程对应的内存区域中;根据UDP协议和分片文件生成UDP报文;通过第一线程发送UDP报文。
一种可能的实现方式中,反馈信息包括下列中的至少一项:重传指示信息或UDP报文的确认指示。
一种可能的实现方式中,通过第二线程发送目标分片文件的剩余部分,包括:根据目标分片文件的反馈信息确定目标分片文件的剩余部分;将目标分片文件的剩余部分拷贝到第二线程对应的内存区域中;通过第二线程发送目标分片文件的剩余部分。
一种可能的实现方式中,目标分片文件的剩余部分包括目标分片文件中未发送的UDP报文、已发送的UDP报文中未收到确认指示的UDP报文,和文件接收设备指示重发的UDP报文。
一种可能的实现方式中,N大于或等于5且小于或等于10。
一种可能的实现方式中,还包括:获取数据传输速率、RTT、文件接收设备的ACK回复间隔和第一线程的预设带宽闲置概率;根据数据传输速率、RTT、ACK回复间隔和预设带宽闲置概率确定分片文件的大小。
一种可能的实现方式中,还包括:获取丢包率和预设重传最大次数;根据丢包率、预设重传最大次数、N和第一线程对应的内存区域的大小确定第二线程对应的内存区域的大小。
一种可能的实现方式中,通过N个第一线程同时发送N个分片文件之前,还包括:获取待发送文件;对待发送文件分片,生成多个分片文件。
第二方面,提供了一种文件发送设备,包括:发送模块,用于通过N个第一线程同时发送N个分片文件,N为大于1的整数;接收模块,用于接收文件接收设备发送的每个分片文件的反馈信息;重传管理模块,用于根据每个分片文件的反馈信息确定每个分片文件的发送进度,确定N个分片文件中是否存在目标分片文件;发送模块,还用于存在目标分片文件时,通过第二线程发送目标分片文件的剩余部分,并通过目标分片文件对应的第一线程发送新的分片文件;目标分片文件的发送进度大于预设进度值。
一种可能的实现方式中,第二线程的发送优先级高于第一线程的发送优先级。
一种可能的实现方式中,重传管理模块还用于:确定第二线程对应的内存区域的使用率小于预设阈值。
一种可能的实现方式中,发送模块具体用于:将分片文件读取到第一线程对应的内存区域中;根据UDP协议和分片文件生成UDP报文;通过第一线程发送UDP报文。
一种可能的实现方式中,反馈信息包括下列中的至少一项:重传指示信息或UDP报文的确认指示。
一种可能的实现方式中,发送模块具体用于:根据目标分片文件的反馈信息确定目标分片文件的剩余部分;将目标分片文件的剩余部分拷贝到第二线程对应的内存区域中;通过第二线程发送目标分片文件的剩余部分。
一种可能的实现方式中,目标分片文件的剩余部分包括目标分片文件中未发送的UDP报文、已发送的UDP报文中未收到确认指示的UDP报文,和文件接收设备指示重发的UDP报文。
一种可能的实现方式中,N大于或等于5且小于或等于10。
一种可能的实现方式中,重传管理模块还用于:获取数据传输速率、RTT、文件接收设备的ACK回复间隔和第一线程的预设带宽闲置概率;根据数据传输速率、RTT、ACK回复间隔和预设带宽闲置概率确定分片文件的大小。
一种可能的实现方式中,重传管理模块还用于:获取丢包率和预设重传最大次数;根据丢包率、预设重传最大次数、N和第一线程对应的内存区域的大小确定第二线程对应的内存区域的大小。
一种可能的实现方式中,还包括分片模块,分片模块用于:获取待发送文件;对待发送文件分片,生成多个分片文件。
第三方面,提供一种文件发送设备,文件发送设备包括处理器,处理器用于与存储器耦合,并读取存储器中的指令并根据指令使得文件发送设备执行第一方面提供的方法。
第四方面,提供一种程序,该程序在被处理器执行时用于执行第一方面提供的方法。
第五方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在计算机或处理器上运行时,实现第一方面提供的方法。
第六方面,提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得该设备实施第一方面提供的方法。
附图说明
图1为本申请实施例提供的文件传输系统的系统架构图;
图2为采用UDP协议传输文件的一种流程图;
图3为文件发送设备采用UDP协议发送文件的一种原理示意图;
图4为文件接收设备采用UDP协议接收文件的一种原理示意图;
图5为采用UDP协议传输文件时带宽利用率的一种示意图;
图6为本申请实施例提供的文件发送方法的原理示意图;
图7为本申请实施例提供的采用UDP协议传输文件时带宽利用率的一种示意图;
图8为本申请实施例提供的文件发送方法的一种流程图;
图9为本申请实施例提供的文件发送设备采用UDP协议发送文件的一种原理示意图;
图10为本申请实施例提供的单个分片的文件传输时间的原理示意图;
图11为本申请实施例提供的文件发送设备的一种结构示意图;
图12为本申请实施例提供的终端设备的一种结构示意图。
具体实施方式
下面结合附图描述本申请实施例。
本申请实施例提供的文件发送方法,应用于电子设备之间传输文件的场景。示例性的,图1为本申请实施例提供的文件传输系统的系统架构图。如图1所示,系统包括电子设备100和电子设备200。电子设备100与电子设备200可以通信传输文件。当电子设备100向电子设备200发送文件时,电子设备100可以称为文件发送设备,电子设备200称为文件接收设备。当电子设备200向电子设备100发送文件时,电子设备200可以称为文件发送设备,电子设备100称为文件接收设备。
本申请实施例对电子设备的类型不做限定。例如,一些电子设备的举例为:手机、平板电脑、笔记本电脑、掌上电脑、桌面电脑、可穿戴设备等。
为了方便说明,本申请实施例以文件发送设备和文件接收设备作为电子设备的名称进行说明。
下面,对采用UDP协议传输文件的一种实现方式进行说明。图2为采用UDP协议传输文件的一种流程图。如图2所示,传输文件的方法可以包括:
S201、文件发送设备获取待发送文件。
具体的,文件发送设备中的底层处理模块可以从高层获取待发送文件,例如,从应用层获取待发送文件。可选的,待发送文件的信息可以包括但不限于:文件路径和文件大小。本实施例对文件的大小不做限定。例如,5GB。
S202、文件发送设备对待发送文件分片,生成多个分片文件。
具体的,采用UDP协议对待发送文件分片。本实施例对分片文件的个数和大小不做限定。可以理解,分片文件的大小越大,分片文件的个数越少。相反的,分片文件的大小越小,分片文件的个数越多。
可选的,分片文件的信息可以包括但不限于:分片序号、分片大小和分片文件中每个UDP数据包的大小。例如,分片文件有5个,分片序号可以依次为1,2,3,4,5。分片大小可以为10MB。可选的,最后一个分片文件的大小可能小于10MB。分片文件中每个UDP数据包的大小可以为1400B。
本实施例对UDP数据包的报文格式不做限定。例如,一种报文格式如下:
|2bit-协议号|1bit-重传报文标记|1bit-快速回复确认报文(acknowledgecharacter,ACK)标记|4bit-所属分片|4bit-分片内编号|4bit-数据报文长度|Body-数据报文|
其中,分片文件也称为分片。
S203、文件发送设备通过预设数值个线程同时向文件接收设备发送预设数值个分片文件。其中,每个线程发送一个分片文件。
相应的,文件接收设备通过预设数值个线程同时接收文件发送设备发送的预设数值个分片文件。
本实施例对预设数值的取值不做限定。
S204、文件接收设备针对每个分片文件生成反馈信息。
具体的,文件接收设备采用UDP协议生成每个分片文件的反馈信息。
其中,反馈信息用于指示下列中的至少一项:是否接收到分片文件中的UDP数据包,或,分片文件中的UDP数据包是否需要重传。
S205、文件接收设备向文件发送设备发送每个分片文件的反馈信息。
相应的,文件发送设备接收文件接收设备发送的每个分片文件的反馈信息。
S206、文件发送设备根据每个分片文件的反馈信息确定每个分片文件的发送进度。
S207、若文件发送设备确定存在传输完成的分片文件,则通过该传输完成的分片文件对应的线程发送新的分片文件。
下面结合图3和图4,对图2所示的传输文件的方法进行说明。示例性的,图3为文件发送设备采用UDP协议发送文件的一种原理示意图,图4为文件接收设备采用UDP协议接收文件的一种原理示意图。
在文件发送端,如图3中的(a)所示,文件A经过分片后包括10个分片,标识为分片1~分片10。预设数值为5,有5个发送线程,标识为线程1~线程5。初始传输时,5个发送线程分别发送一个分片,具体为:线程1发送分片1、线程2发送分片2、线程3发送分片3、线程4发送分片4、线程5发送分片5。
如图3中的(b)所示,文件发送设备接收到文件接收设备发送的反馈信息,确定分片1~分片5的发送进度。分片1的发送进度为95%、分片2的发送进度为90%、分片3的发送进度为65%、分片4的发送进度为35%、分片5的发送进度为15%。不存在传输完成的分片文件。文件发送设备继续通过线程1~线程5发送对应的分片。在这个过程中,每个线程还用于发送需要重传的UDP数据包。
如图3中的(c)所示,文件发送设备接收到文件接收设备发送的反馈信息,确定分片1~分片5的发送进度。分片1的发送进度为100%,确定分片1发送完成。通过分片1对应的线程1继续发送新的分片,具体为分片6,如图3中的(d)所示。
在文件接收端,如图4所示,文件接收设备通过多个线程接收分片文件。当接收到全部的分片1~分片10后,根据分片1~分片10合成文件A。
可见,在该实现方式中,对于发送端的每个线程,该线程传输的分片文件完成传输后才发送新的分片文件。在实际应用场景中,由于数据包丢包、反馈信息延时、反馈信息丢失等问题,导致UDP数据包的大量重传。示例性的,图5为采用UDP协议传输文件时带宽利用率的一种示意图。如图5所示,在分片传输的初期,各个线程均发送新分片中的新数据包,传输速率较大,带宽利用率逐渐升高。该阶段可以称为爬坡期,并逐渐进入平稳期,平稳期的带宽利用率较高。之后,文件发送设备根据接收到的反馈信息,确定每个分片中需要重传的数据包,线程同时传输剩余的新数据包和重传数据包。新数据包的数量逐渐减少,重传数据包的数量逐渐增多。该阶段的传输速率逐渐减小,带宽利用率逐渐降低,可以称为下坡期。如果通信环境持续不好,将一直有重传数据包,例如,在时间段t1~t2中只发送重传数据包,将导致文件传输速率非常小,带宽空闲,存在掉坑现象。
本申请实施例提供一种文件发送方法,应用于文件发送设备。设置两种线程,称为发送线程和重传线程。发送线程有多个。发送线程和重传线程均对应有内存区域,用于存储待发送的分片文件。当发送线程中分片文件的发送进度大于预设进度值时,将该分片文件未发送的剩余部分切换到重传线程,通过重传线程继续发送。本申请实施例提供的文件发送方法,确保了发送线程中新老分片文件的及时置换,发送线程可以及时的发送新的分片文件,提高了文件发送速率,提高了带宽利用率,避免了因为重传等待导致的掉坑现象。
示例性的,图6为本申请实施例提供的文件发送方法的原理示意图,图7为本申请实施例提供的采用UDP协议传输文件时带宽利用率的一种示意图。如图6所示,文件发送设备可以包括传输调度模块61和重传管理模块62。传输调度模块61用于调度发送线程或重传线程以发送不同的分片文件。重传管理模块62用于根据文件接收模块发送的反馈信息确定每个分片文件的发送进度,并确定分片文件是否通过重传线程发送,将确定结果通知给传输调度模块61。
示例性的,图7为本申请实施例提供的采用UDP协议传输文件时带宽利用率的一种示意图。如图7所示,爬坡期与图5中的爬坡期相似,此处不再赘述。在图7中,进入平稳期后,由于不断的将目标分片文件的剩余部分转移至重传线程,目标分片文件对应的发送线程用于发送新的分片文件,所以,平稳期的持续时间较长。其中,目标分片文件的发送进度大于预设进度值。相比于图5,在图7中,提高了文件发送速率和带宽利用率。
下面通过具体的实施例对本申请的技术方案进行详细说明。下面的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
本申请实施例中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
需要说明,本实施例对发送线程和重发线程的名称不做限定。例如,发送线程也称为第一线程,重发线程也称为第二线程。
需要说明,在本申请实施例中,分片文件也称为分片,UDP数据包也称为UDP数据报文或UDP报文。
图8为本申请实施例提供的文件发送方法的一种流程图。本实施例提供的文件发送方法,执行主体涉及文件发送设备和文件接收设备。如图8所示,本实施例提供的文件发送方法,可以包括:
S801、文件发送设备通过N个发送线程同时发送N个分片文件,N为大于1的整数。
相应的,文件接收设备通过N个发送线程同时接收文件发送设备发送的N个分片文件。
本实施例对N的具体取值不做限定。可选的,N大于或等于5且小于或等于10。通常,分片数量受物理输入输出(input/output,IO)、中央处理器(central processing unit、CPU)个数限制。每个发送线程对应一个分片,为了平衡多个线程之间的切换消耗和物理IO竞争,N可以在5-10之间。
S802、文件接收设备针对每个分片文件生成反馈信息。
具体的,文件接收设备采用UDP协议生成每个分片文件的反馈信息。
可选的,反馈信息可以包括下列中的至少一项:重传指示信息或UDP报文的确认指示。
举例说明。一种实现方式可以为:对于每个分片文件,当文件接收设备收到该分片文件的UDP数据报文时,为该分片文件启动定时器。当文件接收设备持续预设时间段没有接收到新的UDP数据报文时,向文件发送设备回复该分片文件的ACK/重传请求。本实施例对预设时间段的取值不做限定,例如,100ms。
可选的,ACK和重传请求可以携带在同一报文中。示例性的,ACK报文的报文格式可以为:
|2bit-协议号|2bit-预留|4bit-所属分片|4bit-ACK报文编号|4bit-报文起始编号|4bit-报文结束编号|4bit-数据报文长度|Body-数据报文|
其中,Body-数据报文,每个UDP数据报文用一个bit位标识。
例如,对于第4个分片文件,文件接收设备已经连续收到第1-1023个UDP数据报文,在第1024-1039个UDP数据报文之间,丢失了第1024、1027和1039个UDP数据报文。ACK报文为:
|2bit-协议号(十进制:1)|2bit-预留(十进制:0)|4bit-所属分片(十进制:4)|4bit-ACK报文编号(十进制:1023)|4bit-报文起始编号(十进制:1024)|4bit-报文结束编号(十进制:1039)|4bit-数据报文长度(十进制:16)|Body-数据报文(二进制:1000 00000000 1001)|
其中,4bit-所属分片的取值为十进制4,表示第4个分片文件。
4bit-ACK报文编号的取值为十进制1023,表示已经连续收到第1-1023个UDP数据报文。
4bit-报文起始编号的取值为十进制1024,4bit-报文结束编号的取值为十进制1039,表示第1024-1039个UDP数据报文。
4bit-数据报文长度的取值为十进制16,表示Body-数据报文的长度为16bit。
Body-数据报文的取值为二进制1000 0000 0000 1001,从最左侧开始,第1个bit表示第1024个UDP数据报文,第2个bit表示第1025个UDP数据报文,以此类推,最后1个bit表示第1039个UDP数据报文。通过每个比特的取值指示对应的UDP数据报文是否接收到。从最左侧开始,第1个bit取值为二进制1,表示第1024个UDP数据报文丢失。第2个bit取值为二进制0,表示第1024个UDP数据报文成功接收。以此类推,通过16bit的不同取值,表示了第1024、1027和1039个UDP数据报文丢失。
S803、文件接收设备向文件发送设备发送每个分片文件的反馈信息。
相应的,文件发送设备接收文件接收设备发送的每个分片文件的反馈信息。
S804、文件发送设备根据每个分片文件的反馈信息确定每个分片文件的发送进度。
S805、若文件发送设备确定N个分片文件中存在目标分片文件,则通过重传线程发送目标分片文件的剩余部分,并通过目标分片文件对应的发送线程发送新的分片文件。目标分片文件的发送进度大于预设进度值。
本实施例对预设进度值的具体取值不做限定。
可选的,目标分片文件的剩余部分可以包括目标分片文件中未发送的UDP报文、已发送的UDP报文中未收到确认指示的UDP报文,和文件接收设备指示重发的UDP报文。
下面结合图9,对图8所示的文件发送方法进行说明。示例性的,图9为本申请实施例提供的文件发送设备采用UDP协议发送文件的一种原理示意图。假设,预设进度值为95%。N=5,有5个发送线程。有1个重传线程。
在文件发送端,如图9中的(a)所示,文件A经过分片后包括10个分片,标识为分片1~分片10。5个发送线程标识为线程1~线程5。重传线程标识为线程6。初始传输时,5个发送线程分别发送一个分片,具体为:线程1发送分片1、线程2发送分片2、线程3发送分片3、线程4发送分片4、线程5发送分片5。
如图9中的(b)所示,文件发送设备接收到文件接收设备发送的反馈信息,确定分片1~分片5的发送进度。分片1的发送进度为96%、分片2的发送进度为90%、分片3的发送进度为65%、分片4的发送进度为35%、分片5的发送进度为15%。分片1的发送进度大于预设进度值95%。文件发送设备通过重传线程6发送分片1的剩余部分,并通过分片1对应的发送线程1发送新的分片文件,具体为分片6,如图9中的(c)所示。
如图9中的(d)所示,文件发送设备接收到文件接收设备发送的反馈信息,确定分片1~分片6的发送进度。分片1位于重传线程6,发送进度为98%。分片2的发送进度为96%、分片3的发送进度为70%、分片4的发送进度为45%、分片5的发送进度为25%、分片6的发送进度为15%。分片2的发送进度大于预设进度值95%。文件发送设备通过重传线程6发送分片2的剩余部分,并通过分片2对应的发送线程2发送新的分片文件,具体为分片7。此时,重传线程6发送分片1的剩余部分和分片2的剩余部分。
可见,本实施例提供的文件发送方法,文件发送设备设置两种线程,称为发送线程和重传线程。发送线程有多个。发送线程和重传线程均对应有内存区域,用于存储待发送的分片文件。当发送线程中分片文件的发送进度大于预设进度值时,将该分片文件未发送的剩余部分切换到重传线程,通过重传线程继续发送。本申请实施例提供的文件发送方法,确保了发送线程中新老分片文件的及时置换,发送线程可以及时的发送新的分片文件,提高了文件发送速率,提高了带宽利用率,避免了因为重传等待导致的掉坑现象。
可选的,S801之前,还可以包括:
S806、文件发送设备获取待发送文件。
S807、文件发送设备对待发送文件分片,生成多个分片文件。
其中,S806可以参见S201,S807可以参见S202,原理相似,此处不再赘述。
可选的,重传线程的发送优先级高于发送线程的发送优先级。
通过设置重传线程的发送优先级高于发送线程的发送优先级,确保了重传线程可以优先发送,降低了需要重传的UDP数据包的数量,避免了重传UDP数据包长时间占用传输资源,进一步提升了文件发送速率,提高了带宽利用率。
可选的,S805中,文件发送设备通过重传线程发送目标分片文件的剩余部分,并通过目标分片文件对应的发送线程发送新的分片文件之前,还可以包括:
文件发送设备确定重传线程对应的内存区域的使用率小于预设阈值。
本实施例对预设阈值的取值不做限定。
具体的,在文件发送设备中,重传线程对应的内存区域可以称为重传区。确定重传区的使用率是否小于预设阈值。若重传区的使用率小于预设阈值,说明重传区中足够空闲,可以将目标分片文件的剩余部分拷贝到重传区,通过重传线程发送目标分片文件的剩余部分。若重传区的使用率大于预设阈值,说明重传区中满载,没有足够空闲,则暂停重传区的载入。
可选的,S801中,文件发送设备通过发送线程发送分片文件,可以包括:
文件发送设备将分片文件读取到发送线程对应的内存区域中。
文件发送设备根据UDP协议和分片文件生成UDP报文。
文件发送设备通过发送线程发送UDP报文。
其中,发送线程对应的内存区域可以称为分片区。例如,有5个发送线程,每个发送线程对应的内存区域为20MB,分片区为5*20MB=100MB。
可选的,S805中,文件发送设备通过重传线程发送目标分片文件的剩余部分,可以包括:
文件发送设备根据目标分片文件的反馈信息确定目标分片文件的剩余部分。
文件发送设备将目标分片文件的剩余部分拷贝到重传线程对应的内存区域中。
文件发送设备通过重传线程发送目标分片文件的剩余部分。
可选的,本实施例提供的文件发送方法,还可以包括:
文件发送设备获取数据传输速率、往返时延(round-trip time,RTT)、文件接收设备的ACK回复间隔和发送线程的预设带宽闲置概率。
根据数据传输速率、RTT、ACK回复间隔和预设带宽闲置概率确定分片文件的大小。
本实施例对预设带宽闲置概率的取值不做限定。
示例性的,下面结合图10进行说明。图10为本申请实施例提供的单个分片的文件传输时间的原理示意图。如图10所示,针对一个分片文件,文件发送设备从开始发送到结束发送,可以划分为如下阶段:集中发送期、ACK等待期和重传期。本实施例对重传期的个数不做限定。例如,在图10中,重传期可以包括第一次重传期和第二次重传期。其中,集中发送期用于发送该分片文件中所有的新数据包,带宽利用率较高。ACK等待期用于接收文件接收设备发送的针对新数据包的反馈信息,包括RTT和ACK回复间隔,带宽相对闲置。重传期用于发送重传数据包以及接收文件接收设备发送的针对重传数据包的反馈信息,包括发送重传数据包的时间、RTT和ACK回复间隔。重传期的带宽利用率较低。可见,为了提高带宽利用率,应该减少重传期。并且,为了提高文件传输速率,提高带宽利用率,应当避免多个线程同时处于重传期。
在本实现方式中,通过根据数据传输速率、RTT、ACK回复间隔和预设带宽闲置概率确定分片文件的大小,提升了确定分片文件大小的合理性。
可选的,在一种实现方式中,数据传输速率、RTT、ACK回复间隔和预设带宽闲置概率可以满足如下公式:
预设带宽闲置概率=((ACK等待期+重传期)/(分片文件大小/数据传输速率+ACK等待期+重传期))^分片文件的个数
其中,ACK等待期=RTT+ACK回复间隔
重传期=发送重传数据包的时间+RTT+ACK回复间隔
假设,文件发送设备接收到ACK后,即将重传数据包转移至重传区,则重传期=0。
可选的,本实施例提供的文件发送方法,还可以包括:
文件发送设备获取丢包率和预设重传最大次数。
文件发送设备根据丢包率、预设重传最大次数、N和发送线程对应的内存区域的大小确定重传线程对应的内存区域的大小。
举例说明。
假设,丢包率为20%,预设重传最大次数为2。那么,第一次重传期的UDP报文为分片文件大小的20%,第二次重传期的UDP报文为分片文件大小的20%*20%=4%。也就是说,第二次重传完成后,分片文件的发送进度为100%-4%=96%。
假设,丢包率为40%,预设重传最大次数为3,N=5,发送线程对应的内存区域的大小为20MB。那么,经过三次重传后,分片文件剩余40%*40%*40%=6.4%。也就是说,第三次重传完成后,分片文件的发送进度为100%-6.4%=93.6%。发送线程为5个,为了确保文件传输速率,至少1个发送线程应当发送新的分片文件,重传区需要放置4个发送线程的重传UDP报文。可以将重传区与分片区之间的比例设置为6.4%*4。假设,分片区为5*20MB=100MB,重传区可以设置为100MB*6.4%*4,大约为25MB。
可以理解的是,文件发送设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对文件发送设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。需要说明的是,本申请实施例中模块的名称是示意性的,实际实现时对模块的名称不做限定。
图11为本申请实施例提供的文件发送设备的一种结构示意图。如图11所示,本实施例提供的文件发送设备,可以包括:
发送模块1101,用于通过N个第一线程同时发送N个分片文件,N为大于1的整数;
接收模块1103,用于接收文件接收设备发送的每个所述分片文件的反馈信息;
重传管理模块1102,用于根据每个所述分片文件的反馈信息确定每个所述分片文件的发送进度,确定所述N个分片文件中是否存在目标分片文件;
发送模块1101,还用于存在目标分片文件时,通过第二线程发送所述目标分片文件的剩余部分,并通过所述目标分片文件对应的第一线程发送新的分片文件;所述目标分片文件的发送进度大于预设进度值。
可选的,所述第二线程的发送优先级高于所述第一线程的发送优先级。
可选的,重传管理模块1102还用于:
确定所述第二线程对应的内存区域的使用率小于预设阈值。
可选的,发送模块1101具体用于:
将所述分片文件读取到所述第一线程对应的内存区域中;
根据UDP协议和所述分片文件生成UDP报文;
通过所述第一线程发送所述UDP报文。
可选的,所述反馈信息包括下列中的至少一项:重传指示信息或所述UDP报文的确认指示。
可选的,发送模块1101具体用于:
根据所述目标分片文件的反馈信息确定所述目标分片文件的剩余部分;
将所述目标分片文件的剩余部分拷贝到所述第二线程对应的内存区域中;
通过所述第二线程发送所述目标分片文件的剩余部分。
可选的,所述目标分片文件的剩余部分包括所述目标分片文件中未发送的UDP报文、已发送的UDP报文中未收到确认指示的UDP报文,和所述文件接收设备指示重发的UDP报文。
可选的,N大于或等于5且小于或等于10。
可选的,重传管理模块1102还用于:
获取数据传输速率、RTT、所述文件接收设备的ACK回复间隔和所述第一线程的预设带宽闲置概率;
根据所述数据传输速率、所述RTT、所述ACK回复间隔和所述预设带宽闲置概率确定所述分片文件的大小。
可选的,重传管理模块1102还用于:
获取丢包率和预设重传最大次数;
根据所述丢包率、所述预设重传最大次数、所述N和所述第一线程对应的内存区域的大小确定所述第二线程对应的内存区域的大小。
可选的,还包括分片模块,分片模块用于:
获取待发送文件;
对所述待发送文件分片,生成多个所述分片文件。
请参考图12,其示出了本申请实施例提供的终端设备的另一种结构。电子设备可以为本申请实施例中的文件发送设备。该终端设备包括:处理器1201、接收器1202、发射器1203、存储器1204和总线1205。处理器1201包括一个或者多个处理核心,处理器1201通过运行软件程序以及模块,从而执行各种功能的应用以及信息处理。接收器1202和发射器1203可以实现为一个通信组件,该通信组件可以是一块基带芯片。存储器1204通过总线1205和处理器1201相连。存储器1204可用于存储至少一个程序指令,处理器1201用于执行至少一个程序指令,以实现上述实施例的技术方案。其实现原理和技术效果与上述方法相关实施例类似,此处不再赘述。
当终端开机后,处理器可以读取存储器中的软件程序,解释并执行软件程序的指令,处理软件程序的数据。当需要通过天线发送数据时,处理器对待发送的数据进行基带处理后,输出基带信号至控制电路中的控制电路,控制电路将基带信号进行射频处理后将射频信号通过天线以电磁波的形式向外发送。当有数据发送到终端时,控制电路通过天线接收到射频信号,将射频信号转换为基带信号,并将基带信号输出至处理器,处理器将基带信号转换为数据并对该数据进行处理。
本领域技术人员可以理解,为了便于说明,图12仅示出了一个存储器和处理器。在实际的终端中,可以存在多个处理器和存储器。存储器也可以称为存储介质或者存储设备等,本申请实施例对此不做限制。
作为一种可选的实现方式,处理器可以包括基带处理器和中央处理器,基带处理器主要用于对通信数据进行处理,中央处理器主要用于执行软件程序,处理软件程序的数据。本领域技术人员可以理解,基带处理器和中央处理器可以集成在一个处理器中,也可以是各自独立的处理器,通过总线等技术互联。本领域技术人员可以理解,终端可以包括多个基带处理器以适应不同的网络制式,终端可以包括多个中央处理器以增强其处理能力,终端的各个部件可以通过各种总线连接。该基带处理器也可以表述为基带处理电路或者基带处理芯片。该中央处理器也可以表述为中央处理电路或者中央处理芯片。对通信协议以及通信数据进行处理的功能可以内置在处理器中,也可以以软件程序的形式存储在存储器中,由处理器执行软件程序以实现基带处理功能。该存储器可以集成在处理器中,也可以独立在处理器之外。该存储器包括高速缓存Cache,可以存放频繁访问的数据/指令。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SS)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,不限于此。
本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。本申请各实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DWD)、或者半导体介质(例如,SSD)等。
本申请实施例提供一种计算机程序产品,当所述计算机程序产品在终端运行时,使得所述终端执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例提供一种计算机可读存储介质,其上存储有程序指令,所述程序指令被终端执行时,使得所述终端执行上述实施例的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。综上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (14)
1.一种文件发送方法,其特征在于,包括:
通过N个第一线程同时发送N个分片文件,N为大于1的整数;
接收文件接收设备发送的每个所述分片文件的反馈信息;
根据每个所述分片文件的反馈信息确定每个所述分片文件的发送进度;
若确定所述N个分片文件中存在目标分片文件,则通过第二线程发送所述目标分片文件的剩余部分,并通过所述目标分片文件对应的第一线程发送新的分片文件;所述目标分片文件的发送进度大于预设进度值。
2.根据权利要求1所述的方法,其特征在于,所述第二线程的发送优先级高于所述第一线程的发送优先级。
3.根据权利要求1所述的方法,其特征在于,所述通过第二线程发送所述目标分片文件的剩余部分,并通过所述目标分片文件对应的第一线程发送新的分片文件之前,还包括:
确定所述第二线程对应的内存区域的使用率小于预设阈值。
4.根据权利要求1-3中任一项所述的方法,其特征在于,通过第一线程发送分片文件,包括:
将所述分片文件读取到所述第一线程对应的内存区域中;
根据用户数据包协议UDP和所述分片文件生成UDP报文;
通过所述第一线程发送所述UDP报文。
5.根据权利要求4所述的方法,其特征在于,所述反馈信息包括下列中的至少一项:重传指示信息或所述UDP报文的确认指示。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述通过第二线程发送所述目标分片文件的剩余部分,包括:
根据所述目标分片文件的反馈信息确定所述目标分片文件的剩余部分;
将所述目标分片文件的剩余部分拷贝到所述第二线程对应的内存区域中;
通过所述第二线程发送所述目标分片文件的剩余部分。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述目标分片文件的剩余部分包括所述目标分片文件中未发送的UDP报文、已发送的UDP报文中未收到确认指示的UDP报文,和所述文件接收设备指示重发的UDP报文。
8.根据权利要求1-7中任一项所述的方法,其特征在于,N大于或等于5且小于或等于10。
9.根据权利要求1-8中任一项所述的方法,其特征在于,还包括:
获取数据传输速率、往返时延RTT、所述文件接收设备的ACK回复间隔和所述第一线程的预设带宽闲置概率;
根据所述数据传输速率、所述RTT、所述ACK回复间隔和所述预设带宽闲置概率确定所述分片文件的大小。
10.根据权利要求1-8中任一项所述的方法,其特征在于,还包括:
获取丢包率和预设重传最大次数;
根据所述丢包率、所述预设重传最大次数、所述N和所述第一线程对应的内存区域的大小确定所述第二线程对应的内存区域的大小。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述通过N个第一线程同时发送N个分片文件之前,还包括:
获取待发送文件;
对所述待发送文件分片,生成多个所述分片文件。
12.一种文件发送设备,其特征在于,所述文件发送设备包括处理器,所述处理器用于与存储器耦合,并读取存储器中的指令并根据所述指令使得所述文件发送设备执行如权利要求1-11中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-11中任一项所述的方法。
14.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在终端上运行时,使得所述终端执行如权利要求1-11中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110351236.XA CN115150383B (zh) | 2021-03-31 | 2021-03-31 | 文件发送方法、设备及计算机可读存储介质 |
PCT/CN2022/083694 WO2022206759A1 (zh) | 2021-03-31 | 2022-03-29 | 文件发送方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110351236.XA CN115150383B (zh) | 2021-03-31 | 2021-03-31 | 文件发送方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115150383A true CN115150383A (zh) | 2022-10-04 |
CN115150383B CN115150383B (zh) | 2023-07-07 |
Family
ID=83404601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110351236.XA Active CN115150383B (zh) | 2021-03-31 | 2021-03-31 | 文件发送方法、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115150383B (zh) |
WO (1) | WO2022206759A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117216011B (zh) * | 2023-08-30 | 2024-05-03 | 建银工程咨询有限责任公司 | 文件传输方法、装置及电子设备 |
CN117118922A (zh) * | 2023-09-19 | 2023-11-24 | 中科驭数(北京)科技有限公司 | Udp报文的重排方法、系统、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254485A1 (en) * | 2011-03-29 | 2012-10-04 | Hitachi Information Systems, Ltd. | Multi-thread file input and output system and multi-thread file input and output program |
US20130173697A1 (en) * | 2011-12-30 | 2013-07-04 | Hon Hai Precision Industry Co., Ltd. | Method and device for file receiving and sending |
CN109981693A (zh) * | 2017-12-27 | 2019-07-05 | 上海文广互动电视有限公司 | 3d内容分发平台的速率控制方法及系统 |
CN111787105A (zh) * | 2020-07-01 | 2020-10-16 | 深圳市有方科技股份有限公司 | 文件传输方法、装置、计算机设备和存储介质 |
CN112311897A (zh) * | 2020-11-17 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 资源文件下载方法、装置、设备及介质 |
CN112532536A (zh) * | 2020-12-15 | 2021-03-19 | 北京秒如科技有限公司 | 一种文件传输方法、系统、计算机可读存储介质及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963572B1 (en) * | 1999-10-22 | 2005-11-08 | Alcatel Canada Inc. | Method and apparatus for segmentation and reassembly of data packets in a communication switch |
EP2051554B1 (en) * | 2002-09-24 | 2011-11-09 | Fujitsu Limited | Packet transferring/transmitting method and mobile communication system |
CN103631569B (zh) * | 2013-12-23 | 2016-07-27 | 百度在线网络技术(北京)有限公司 | 下载方法和装置 |
CN105450769A (zh) * | 2015-12-10 | 2016-03-30 | 浪潮通用软件有限公司 | 一种文件传输的方法及装置 |
CN112422243B (zh) * | 2020-11-22 | 2021-08-13 | 广州技象科技有限公司 | 基于进程优化的数据传输方法和装置 |
-
2021
- 2021-03-31 CN CN202110351236.XA patent/CN115150383B/zh active Active
-
2022
- 2022-03-29 WO PCT/CN2022/083694 patent/WO2022206759A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254485A1 (en) * | 2011-03-29 | 2012-10-04 | Hitachi Information Systems, Ltd. | Multi-thread file input and output system and multi-thread file input and output program |
US20130173697A1 (en) * | 2011-12-30 | 2013-07-04 | Hon Hai Precision Industry Co., Ltd. | Method and device for file receiving and sending |
CN109981693A (zh) * | 2017-12-27 | 2019-07-05 | 上海文广互动电视有限公司 | 3d内容分发平台的速率控制方法及系统 |
CN111787105A (zh) * | 2020-07-01 | 2020-10-16 | 深圳市有方科技股份有限公司 | 文件传输方法、装置、计算机设备和存储介质 |
CN112311897A (zh) * | 2020-11-17 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 资源文件下载方法、装置、设备及介质 |
CN112532536A (zh) * | 2020-12-15 | 2021-03-19 | 北京秒如科技有限公司 | 一种文件传输方法、系统、计算机可读存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115150383B (zh) | 2023-07-07 |
WO2022206759A1 (zh) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021254330A1 (zh) | 内存管理方法、系统、客户端、服务器及存储介质 | |
CN115150383B (zh) | 文件发送方法、设备及计算机可读存储介质 | |
US11671210B2 (en) | Retransmission control method, communications interface, and electronic device | |
CN109597782B (zh) | 用于通过扩展介质来扩展usb 3.0兼容通信的方法和设备 | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
US7457845B2 (en) | Method and system for TCP/IP using generic buffers for non-posting TCP applications | |
WO2022001175A1 (zh) | 数据包发送的方法、装置 | |
EP3930396B1 (en) | Data transmission method and related device | |
US9130740B2 (en) | Variable acknowledge rate to reduce bus contention in presence of communication errors | |
JP2019106697A (ja) | 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス | |
CN103650401A (zh) | 一种移动终端内部通信方法 | |
JP6800375B2 (ja) | 通信装置、通信方法及び通信プログラム | |
US20090157896A1 (en) | Tcp offload engine apparatus and method for system call processing for static file transmission | |
WO2021057068A1 (zh) | Rdma数据流控方法、系统、电子设备及可读存储介质 | |
CN108540273B (zh) | 一种数据包重传的方法和装置 | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
WO2023093256A1 (zh) | 一种参数调整方法和装置 | |
CN114443533A (zh) | 扩展环境中usb设备的移除和ping干预 | |
CN114095907A (zh) | 蓝牙连接的控制方法、装置及设备 | |
US20040240388A1 (en) | System and method for dynamic assignment of timers in a network transport engine | |
CN111819899B (zh) | 下行传输资源的分配方法和装置 | |
US20120082030A1 (en) | Packet retransmission control system, packet retransmission control method and retransmission control program | |
JP2014222466A (ja) | 情報処理装置、情報処理システムおよび情報処理システムの通信方法 | |
WO2024082238A1 (zh) | 通信方法、装置、设备以及存储介质 | |
US9405719B2 (en) | Circuitry to generate and/or use at least one transmission time in at least one descriptor |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |