基于UDP协议的文件断点续传方法及装置
技术领域
本发明涉及通信技术领域,更具体地,涉及一种基于UDP协议的文件断点续传方法及装置。
背景技术
当今万物互联发展迅速,基于B/S架构即客户端/服务器端架构的站点开发及架设模式普遍应用于互联网,终端感知器件也不断的进入人们的工作生活当中。互联网中信息交互越来越频繁,文件作为信息资源的重要载体,在互联网的客户端和服务器端经常传递;在物联网中,各种终端感知器件的***升级文件、配置文件等都会经由各种连接方式,比如有线网络、4G网络、WIFI、蓝牙等通信方式进行传递。然而,通信方式的增加,通信压力的加大,导致在文件传输过程中会遇到网络不稳定或者中断的情况,这就需要重新传输文件。针对这种文件需要重新传输的情况,同时也为了避免文件频繁传输造成的网络资源浪费,文件传输中支持断点续传显得尤为必要。
当前,文件上传方式很多,按照不同的文件传输协议划分,有ftp、ssh、http等多种文件传输工具。相比较而言,依托客户端进行文件上传的模式更为方便、快捷。现如今,基于客户端模式进行上传的方法也有很多种,比如利用各种客户端上传组件对文件进行整体上传或分片(块)上传,即便有些支持分片的客户端组件关注了断点本身,但是续传粒度为文件块,且大多没有对断点位置持久化,不仅浪费了文件的上传时间和网络资源,还不能够保证文件续传的准确及稳定性。
现有的文件断点传输方法有如下两种:
基于应用层协议的文件断点续传方法,比如基于文件的http、ftp协议进行文件的断点续传;此方法的优势在于文件传输协议已经成熟,在网络上也有大量的应用。但是以上两种协议在应用场景上更适应于互联网设备间的文件传输,http、ftp等协议便于获取、安装,但是对于物联网等嵌入式设备的文件传输,http、ftp协议不能直接获取,需要重新编译安装,且协议较为庞大,对于嵌入式设备这种CPU资源、存储资源受限的环境,还是有很大的使用限制;
基于tcp/ip协议的文件断点续传方法,利用tcp/ip协议的底层重传机制;将文件分割成若干个数据包,在文件的每一个数据包传递的过程中都会对数据的完整性进行校验,当传递数据的某一个bit出现错误时,tcp/ip协议会返回接收数据失败的结果,发送端会重传这个数据,由于tcp协议是一个面向连接的协议,数据需要按序依次传递,当某个数据需要重传时,后面的数据传递都需要等待,对于传输链路不稳定的情况,比如WiFi或者说是3G回传模式,有很大概率出现传输错误的情况,在传输大文件的情况下,会频繁的出现某一个数据重传导致文件传输时间加长,客户的直观体验差。
发明内容
本发明实施例提供一种基于UDP协议的文件断点续传方法及装置,用以解决或者至少部分地解决现有技术存在的在不稳定网络链路和低带宽的网络环境下,难以实现文件传输的缺陷。
第一方面,本发明实施例提供一种基于UDP协议的文件断点续传方法,包括:
基于UDP协议向接收端发送全部数据包;
若通过预先建立的TCP通道接收到所述接收端发送的重发请求,则将所述重发请求携带的文件片信息对应的数据包存储于文件片重发区;
若判断获知基于UDP协议向所述接收端已发送一次全部数据包,且所述文件片重发区不为空,则基于UDP协议向所述接收端发送所述文件片重发区中的数据包;
其中,所述数据包包括文件片及所述文件片在文件中的位置;所述文件片,是对所述文件进行分割获得的;所述重发请求携带的文件片信息,为所述接收端缺失的文件片的信息。
优选地,所述基于UDP协议向接收端发送全部数据包之前,还包括:
基于所述TCP通道,向所述接收端发送所述文件的参数和基于UDP协议进行文件传输的参数;
其中,所述文件的参数包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数和单文件片最大字节数;所述基于UDP协议进行文件传输的参数包括需要与所述接收端建立的UDP连接数和UDP端口号列表。
优选地,所述基于所述TCP通道,向所述接收端发送所述文件的参数和基于UDP协议进行文件传输的参数之前,还包括:
建立与所述接收端之间的所述TCP通道。
第二方面,本发明实施例提供一种基于UDP协议的文件断点续传方法,包括:
基于UDP协议接收发送端发送的数据包;
若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向所述发送端发送重发请求,以使得所述发送端根据所述重发请求携带的所述缺失的文件片的信息,发送所述缺失的文件片的信息对应的数据包;
其中,所述数据包包括文件片及所述文件片在文件中的位置;所述文件片,是对所述文件进行分割获得的。
优选地,所述基于UDP协议接收发送端发送的数据包之前,还包括:
基于所述TCP通道,接收所述发送端发送的所述文件的参数和基于UDP协议进行文件传输的参数;
其中,所述文件的参数包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数和单文件片最大字节数;所述基于UDP协议进行文件传输的参数包括需要与所述接收端建立的UDP连接数和UDP端口号列表。
优选地,所述基于所述TCP通道,接收所述发送端发送的所述文件的参数和基于UDP协议进行文件传输的参数之前,还包括:
建立与所述发送端之间的所述TCP通道。
第三方面,本发明实施例提供一种基于UDP协议的文件断点续传装置,包括:
第一UDP模块,用于基于UDP协议向接收端发送全部数据包;
第一TCP模块,用于若通过预先建立的TCP通道接收到所述接收端发送的重发请求,则将所述重发请求携带的文件片信息对应的数据包存储于文件片重发区;
第一UDP模块,还用于若判断获知基于UDP协议向所述接收端已发送一次全部数据包,且所述文件片重发区不为空,则基于UDP协议向所述接收端发送所述文件片重发区中的数据包;
其中,所述数据包包括文件片及所述文件片在文件中的位置;所述文件片,是对所述文件进行分割获得的;所述重发请求携带的文件片信息,为所述接收端缺失的文件片的信息。
第四方面,本发明实施例提供一种基于UDP协议的文件断点续传装置,包括:
第二UDP模块,用于基于UDP协议接收发送端发送的数据包;
第二TCP模块,用于若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向所述发送端发送重发请求,以使得所述发送端根据所述重发请求携带的所述缺失的文件片的信息,发送所述缺失的文件片的信息对应的数据包;
其中,所述数据包包括文件片及所述文件片在文件中的位置;所述文件片,是对所述文件进行分割获得的。
第五方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,执行所述程序时实现如第一方面或第二方面的各种可能的实现方式中任一种可能的实现方式所提供的基于UDP协议的文件断点续传方法的步骤。
第六方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面或第二方面的各种可能的实现方式中任一种可能的实现方式所提供的基于UDP协议的文件断点续传方法的步骤。
本发明实施例提供的基于UDP协议的文件断点续传方法及装置,通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例提供的基于UDP协议的文件断点续传方法的流程示意图;
图2为根据本发明实施例提供的基于UDP协议的文件断点续传方法中数据包的示意图;
图3为根据本发明实施例提供的基于UDP协议的文件断点续传方法中建立TCP通道的流程示意图;
图4为根据本发明实施例提供的基于UDP协议的文件断点续传方法中文件片tcp传输数据包中携带信息的示意图;
图5为根据本发明实施例提供的基于UDP协议的文件断点续传方法的流程示意图;
图6为根据本发明实施例提供的基于UDP协议的文件断点续传方法的信令图;
图7为本发明实施例提供的基于UDP协议的文件断点续传方法中发送端的文件传输流程示意图;
图8为本发明实施例提供的基于UDP协议的文件断点续传方法中接收端的文件传输流程示意图;
图9为根据本发明实施例提供的基于UDP协议的文件断点续传装置的结构示意图;
图10为根据本发明实施例提供的基于UDP协议的文件断点续传装置的结构示意图;
图11为根据本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了克服现有技术的上述问题,本发明实施例提供一种基于UDP协议的文件断点续传方法及装置,其发明构思是,在不稳定的网络传输链路场景中,要进行高效的文件传输,既要具有文件断点续传的功能,又要考虑文件传输的效率,需要有一个高效的文件断点传输方法,因此,文件的传输基于UDP协议,并建立一个低数据量的TCP通道,对文件的传输进行控制,保证文件发送端和文件接收端的文件信息统一。
图1为根据本发明实施例提供的基于UDP协议的文件断点续传方法的流程示意图。如图1所示,该方法包括:步骤S101、基于UDP协议向接收端发送全部数据包。
其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
需要说明的是,本发明实施例提供的基于UDP协议的文件断点续传方法的执行主体为文件发送端(可以简称“发送端”)。
具体地,文件发送端建立一个发送线程,基于UDP协议循环发送文件片,直到整个文件都被正确的接收。
用户数据报协议(UDP,User Datagram Protocol)为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。
充分的利用UDP协议的快速数据包发送性能,传输速度快,无需接收方回应即可传递下一个报文,可最大程度的将网络带宽用于文件数据的传输。
在文件发送端获取文件的分割数量和文件大小、校验和等信息:文件分割后的文件片不应该大于IP报文的最大传输单元1500字节,考虑到需要添加报文头,确定文件片大小为1400字节,文件校验和信息可以使用MD5值进行校验。
在数据传递之前进行文件的md5值和文件数据分割的协商。定义整个文件需要分成多少个数据包进行发送,文件的接收端进行数据的检验。
图2为根据本发明实施例提供的基于UDP协议的文件断点续传方法中数据包的示意图。文件发送端在分割后的文件片上加上需要携带的信息,包括文件总片数,当前是第几片,如图2所示。
步骤S102、若通过预先建立的TCP通道接收到接收端发送的重发请求,则将重发请求携带的文件片信息对应的数据包存储于文件片重发区。
其中,重发请求携带的文件片信息,为接收端缺失的文件片的信息。
具体地,接收端对分析接收的文件片是否缺失,将缺失的文件片(即“断点”)的信息置于重发请求中,作为重发请求携带的文件片信息,通过TCP通道发送到文件发送端。
发送端通过TCP通道接收到重发请求之后,可以从该重发请求中获取文件片信息,确定接收端缺失的文件片是哪一片,将该包括文件片及该文件片在文件中的位置的数据包存储于文件片重发区。
步骤S103、若判断获知基于UDP协议向接收端已发送一次全部数据包,且文件片重发区不为空,则基于UDP协议向接收端发送文件片重发区中的数据包。
具体地,发送端已发送一次全部数据包之后,文件片重发区不为空,说明在文件传输过程中出现断点,将文件片重发区中的数据包再次向发送端进行发送,实现断点续传。
可以理解的是,本发明实施例支持文件的断点续传,即使文件接收方的设备重启之后再传输之前未传输完的文件,也不需要从头开始传输。
本发明实施例为多线程的数据发送。一个线程专门的进行数据的发送,不管是数据发送的是否正确,直到把整个文件的所有数据包发送完毕。另外一个线程接收来自于文件接收方的反馈信息,通过反馈信息知道哪些数据包需要重新传递。发送方只重传发送错误或丢失的数据包。直到文件接收方发送的整个文件校验完成的消息后才认为文件传输完成。
本发明实施例支持数据包乱序传递。每个数据包,它有自己的校验值的同时也表明了自己在整个文件中是处于第几个数据包的位置。在数据发送阶段,可以多线程的发送数据,而不需要考虑发送数据包之间的先后顺序,接收方会根据数据包自身携带的位置信息进行重组。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
基于上述各实施例的内容,基于UDP协议向接收端发送全部数据包之前,还包括:基于TCP通道,向接收端发送文件的参数和基于UDP协议进行文件传输的参数。
其中,文件的参数包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数和单文件片最大字节数;基于UDP协议进行文件传输的参数包括需要与接收端建立的UDP连接数和UDP端口号列表。
具体地,发送端通过TCP通道发送文件信息,包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数、单文件片最大字节(1400)、需要和文件接收端建立的UDP连接数和UDP端口号列表。文件接收端收到此信息后在本地对应存储位置创建一个文件,并确保有足够空间存储此大小的文件。同时启动多个线程(线程数和UDP连接数相同),每个线程监听一个UDP端口号,准备接收文件片。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
基于上述各实施例的内容,基于TCP通道,向接收端发送文件的参数和基于UDP协议进行文件传输的参数之前,还包括:建立与接收端之间的TCP通道。
具体地,图3为根据本发明实施例提供的基于UDP协议的文件断点续传方法中建立TCP通道的流程示意图。
建立TCP信息交互通道,与文件接收端建立TCP连接,为避免网络环境不稳定造成TCP连接断开和数据丢失,需要对TCP连接做重连处理和请求数据的回应,如图3所示:
a)读取文件接收端的IP和端口号,一般从配置文件中获取。
b)向文件接收端的IP和port发起TCP连接建立请求,如果建立连接失败,可能是网络不稳定或者文件接收端的TCP服务没有打开,就等待预设的第一时长(例如5s)后再次发起连接,直到连接成功;如果建立成功,进入数据发送环节;
c)发送TCP数据,如果发送失败,表示连接异常或者已经断开,需要主动断开TCP连接(不论连接是否已经断开)以释放socket资源,等待第一时长(例如5s)后再重新连接,重新发送之前未发送成功的TCP数据。
d)如果TCP数据发送成功,那么在TCP连接承载的数据中需要有一个确认回应消息,如图4所示,TCP连接的承载数据包括transfer_id,request/response以及数据信息。TCP连接的任何一端发送数据都必须在数据信息前增加transfer_id和request字段,每发送一个数据包transfer_id顺序加1,request表示数据发送,对端收到此数据后,立即发起回应包,回应包中transfer_id和接收数据中的transfer_id保持一致,添加response标识已经收到此数据。
如果没有收到回应消息,等待预设的第二时长(例如2s)后再次发送此数据(此时transfer_id需要顺序加1),如果收到回应消息,并且消息体中的transfer_id与发送的一致,则此条数据消息才正式发送完成,可以获取下一个数据内容进入下一个数据发送阶段。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
图5为根据本发明实施例提供的基于UDP协议的文件断点续传方法的流程示意图。基于上述各实施例的内容,如图5所示,该方法包括:步骤S501、基于UDP协议接收发送端发送的数据包。
其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
需要说明的是,本发明实施例提供的基于UDP协议的文件断点续传方法的执行主体为文件接收端(可以简称“接收端”)。
具体地,文件接收端基于UDP协议,接收文件发送端发送的各文件片,直到整个文件都被正确的接收。
步骤S502、若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向发送端发送重发请求,以使得发送端根据重发请求携带的缺失的文件片的信息,发送缺失的文件片的信息对应的数据包。
具体地,接收端对分析接收的文件片是否缺失,将缺失的文件片(即“断点”)的信息置于重发请求中,作为重发请求携带的文件片信息,通过TCP通道发送到文件发送端。
发送端通过TCP通道接收到重发请求之后,可以从该重发请求中获取文件片信息,确定接收端缺失的文件片是哪一片,将该包括文件片及该文件片在文件中的位置的数据包存储于文件片重发区。
发送端已发送一次全部数据包之后,文件片重发区不为空,说明在文件传输过程中出现断点,将文件片重发区中的数据包再次向发送端进行发送,实现断点续传。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
基于上述各实施例的内容,基于UDP协议接收发送端发送的数据包之前,还包括:基于TCP通道,接收发送端发送的文件的参数和基于UDP协议进行文件传输的参数。
其中,文件的参数包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数和单文件片最大字节数;基于UDP协议进行文件传输的参数包括需要与接收端建立的UDP连接数和UDP端口号列表。
具体地,接收端通过TCP通道接收文件信息,包括文件名、存储位置、文件大小、校验和、分割文件后文件片个数、单文件片最大字节(1400)、需要和文件接收端建立的UDP连接数和UDP端口号列表。
文件接收端收到此信息后在本地对应存储位置创建一个文件,并确保有足够空间存储此大小的文件。同时启动多个线程(线程数和UDP连接数相同),每个线程监听一个UDP端口号,准备接收文件片。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
基于上述各实施例的内容,基于TCP通道,接收发送端发送的文件的参数和基于UDP协议进行文件传输的参数之前,还包括:建立与发送端之间的TCP通道。
需要说明的是,接收端建立与发送端之间的TCP通道的具体过程,可以详见上述发送端建立与接收端之间的TCP通道的实施例,此处不再赘述。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
为了便于对本发明上述各实施例的理解,下面基于发送端和接收端的交互过程,对文件的传输过程进行说明。
图6为根据本发明实施例提供的基于UDP协议的文件断点续传方法的信令图。发送端与接收端之间的交互过程如图6所示:
首先,发送端与接收端之间建立TCP通道,用于进行信息交互;
建立TCP通道之后,发送端向接收端发送文件的参数(例如文件分割信息等)和基于UDP协议进行文件传输的参数(例如UDP连接数和UDP端口号列表等UDP通道信息);
发送端通过多个基于UDP协议的线程与接收端发送数据包;
接收端向发送端反馈缺失数据包信息,以使得发送端进行缺失数据包的重传;
接收端接收到全部数据包之后,进行文件校验;
文件校验成功,说明文件已成功接收,接收端向发送端反馈接收完成消息。
图7为本发明实施例提供的基于UDP协议的文件断点续传方法中发送端的文件传输流程示意图。如图7所示,文件发送端分为TCP消息控制通道和UDP发送通道,TCP消息控制通道在数据发送期间需要记录文件接收端回应的文件片重发请求,具体步骤如下:
a)TCP消息控制通道如果收到UDP重发请求后,将重发请求的文件片信息(表征哪一片数据需要重传)存储到文件片重发区,之后继续处理其他消息。
b)如果没有收到UDP重发请求,继续处理请他消息。
UDP发送通道即发送线程,在数据传输开始时创建,数据传输结束后关闭,具体步骤如下:
a)数据发送线程被创建。
b)判断当前TCP通道是否正常,如果不正常则等待5s后再次检查。
c)TCP通道正常后,将文件分割后的数据包通过UDP协议发送出去,如果不是最后一个数据包,就循环依次发送下一个数据包,在每次发送数据包前都检查一下TCP通道的状态是否正常。
d)当是最后一个数据包时,开始重传文件重传区的数据包
e)如果文件重传区有数据包,重新发送待重传的数据包,直到文件重传区的数据包都发送完毕。
f)检查TCP通道是否收到文件传输完成的指示。如果没有收到,等待2s后,再次检测文件重传区是否有待发送数据包,回到步骤e
g)如果TCP通道收到文件传输完成的指示,发送线程退出,本次文件发送流程结束。
图8为本发明实施例提供的基于UDP协议的文件断点续传方法中接收端的文件传输流程示意图。如图8所示,文件接收端分为TCP通道和UDP接收线程,TCP通道负责分析接收的文件片是否缺失、发送缺失文件信息到文件发送端,接收线程负责解析数据包信息,并且记录数据包中的文件片信息,将数据包拼成整个文件。TCP通道具体步骤如下:
a)记录收到的文件片中序号最大的那个文件片n,同时重置定时器(定时器的时长可以根据实际情况设定,例如2s);
b)如果在定时器超时前,还收到新的文件片,回到步骤a;
c)如果定时超时的时候还没有收到新文件片,就查看序号1到n之间有哪些序号缺失,如果有缺失的序号就表示数据包没有收到;
d)如果还是没有收到,发送缺失数据编号到文件发送端,等待定时器的定时时长后回到步骤a。
e)如果缺失文件都已经收到,查看文件片n是否是整个文件的最后一片,如果不是最后一片,说明文件发送端还在继续发送文件片,等待定时器的定时时长,回到步骤a,继续检查文件片
f)如果已经收到最后一个文件片,检查整个文件的校验和是否与文件发送端发送的校验值一致,如果不一致,发送所有文件片缺失信息给文件发送端(文件发送端会发送所有文件片)
g)文件的校验和一致,即表示文件接收完成。
UDP接收线程的具体步骤如下:
a)创建UDP的接收线程,并阻塞等待UDP数据包的到来。
b)收到数据包后,解析数据包,分析数据包的包头信息,获取文件片信息存到文件片列表,供TCP通道进行缺包统计。
c)分析数据包中的文件片数据,将文件片数据写入整个文件的对应位置
d)如果没有收到发送完成指示,回到步骤a,继续等待下一个文件片数据包。
收到发送完成指示,表示文件发送端已经完成了所有文件片数据的发送,也表示文件接收到都已经确认收到,本UDP线程正常结束。
本发明实施例采用基础的UDP协议,在嵌入式设备不稳定的网络传输环境下,进行高效的文件传输,通过自定义的基于UDP协议的文件断点续传方法,通过多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
本发明实施例充分利用了UDP协议传输速度快,真实数据的带宽占用比高的特点,最大程度的将网络带宽用于文件数据的传输。为保证文件的完整性的断点续传功能,建立一个低数据量的TCP通道,保证文件发送端和文件接收端的文件信息统一,在文件发送端分析文件的md5值和文件分割的信息,定义整个文件需要分成多少个数据包进行发送,文件的接收端进行文件数据的检验;本发明实施例支持文件的断点续传,即使文件接收方的设备重启之后再传输之前未传输完的文件,也不需要从头开始传输。支持数据包乱序传递,每个数据包,它有自己的校验值的同时也表明了自己在整个文件中是处于第几个数据包的位置。在数据发送阶段,可以多线程的发送数据,不需要考虑发送数据包之间的先后顺序,接收方会根据数据包自身携带的位置信息进行重组,也不需要按序接收数据包,并发接收数据也是本发明实施例的技术优点,能够充分利用带宽传输文件。
图9为根据本发明实施例提供的基于UDP协议的文件断点续传装置的结构示意图。基于上述各实施例的内容,如图9所示,该装置包括第一UDP模块901和第一TCP模块902,其中:
第一UDP模块901,用于基于UDP协议向接收端发送全部数据包;
第一TCP模块902,用于若通过预先建立的TCP通道接收到接收端发送的重发请求,则将重发请求携带的文件片信息对应的数据包存储于文件片重发区;
第一UDP模块901,还用于若判断获知基于UDP协议向接收端已发送一次全部数据包,且文件片重发区不为空,则基于UDP协议向接收端发送文件片重发区中的数据包;
其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的;重发请求携带的文件片信息,为接收端缺失的文件片的信息。
需要说明的是,本发明实施例提供的基于UDP协议的文件断点续传装置为发送端。
具体地,第一UDP模块901与第一TCP模块902电连接。
第一UDP模块901,基于UDP协议循环发送文件片,直到整个文件都被正确的接收。
接收端对分析接收的文件片是否缺失,将缺失的文件片(即“断点”)的信息置于重发请求中,作为重发请求携带的文件片信息,通过TCP通道发送到文件发送端。
第一TCP模块902通过TCP通道接收到重发请求之后,可以从该重发请求中获取文件片信息,确定接收端缺失的文件片是哪一片,将该包括文件片及该文件片在文件中的位置的数据包存储于文件片重发区。
第一UDP模块901已发送一次全部数据包之后,文件片重发区不为空,说明在文件传输过程中出现断点,第一UDP模块901将文件片重发区中的数据包再次向发送端进行发送,实现断点续传。
本发明实施例提供的基于UDP协议的文件断点续传装置,用于执行本发明上述各实施例提供的基于UDP协议的文件断点续传方法,该基于UDP协议的文件断点续传装置包括的各模块实现相应功能的具体方法和流程详见上述基于UDP协议的文件断点续传方法的实施例,此处不再赘述。
该基于UDP协议的文件断点续传装置用于前述各实施例的基于UDP协议的文件断点续传方法。因此,在前述各实施例中的基于UDP协议的文件断点续传方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
图10为根据本发明实施例提供的基于UDP协议的文件断点续传装置的结构示意图。基于上述各实施例的内容,如图4所示,该装置包括第二UDP模块1001和第二TCP模块1002,其中:
第二UDP模块1001,用于基于UDP协议接收发送端发送的数据包;
第二TCP模块1002,用于若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向发送端发送重发请求,以使得发送端根据重发请求携带的缺失的文件片的信息,发送缺失的文件片的信息对应的数据包;
其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
需要说明的是,本发明实施例提供的基于UDP协议的文件断点续传装置为接收端。
具体地,第二UDP模块1001与第二TCP模块1002电连接。
第二UDP模块1001基于UDP协议,接收文件发送端发送的各文件片,直到整个文件都被正确的接收。
第二TCP模块1002对分析接收的文件片是否缺失,将缺失的文件片(即“断点”)的信息置于重发请求中,作为重发请求携带的文件片信息,通过TCP通道发送到文件发送端。
接收端通过TCP通道接收到重发请求之后,可以从该重发请求中获取文件片信息,确定接收端缺失的文件片是哪一片,将该包括文件片及该文件片在文件中的位置的数据包存储于文件片重发区。
发送端已发送一次全部数据包之后,文件片重发区不为空,说明在文件传输过程中出现断点,将文件片重发区中的数据包再次向发送端进行发送,实现断点续传。
本发明实施例提供的基于UDP协议的文件断点续传装置,用于执行本发明上述各实施例提供的基于UDP协议的文件断点续传方法,该基于UDP协议的文件断点续传装置包括的各模块实现相应功能的具体方法和流程详见上述基于UDP协议的文件断点续传方法的实施例,此处不再赘述。
该基于UDP协议的文件断点续传装置用于前述各实施例的基于UDP协议的文件断点续传方法。因此,在前述各实施例中的基于UDP协议的文件断点续传方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。
本发明实施例通过在不稳定网络链路和低带宽的网络环境下,使用UDP协议和多线程发送文件数据提高宽带利用率,通过简单的信息反馈消息提高文件数据的带宽利用占比,解决了不稳定链路、低宽带环境下的文件传输问题。
图11为根据本发明实施例提供的电子设备的实体结构示意图。基于上述实施例的内容,如图11所示,该电子设备可以包括:处理器(processor)1101、存储器(memory)1102和总线1103;其中,处理器1101和存储器1102通过总线1103完成相互间的通信;处理器1101用于调用存储在存储器1102中并可在处理器1101上运行的计算机程序指令,以执行上述各方法实施例所提供的基于UDP协议的文件断点续传方法,例如包括:基于UDP协议向接收端发送全部数据包;若通过预先建立的TCP通道接收到接收端发送的重发请求,则将重发请求携带的文件片信息对应的数据包存储于文件片重发区;若判断获知基于UDP协议向接收端已发送一次全部数据包,且文件片重发区不为空,则基于UDP协议向接收端发送文件片重发区中的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的;重发请求携带的文件片信息,为接收端缺失的文件片的信息;或者包括:基于UDP协议接收发送端发送的数据包;若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向发送端发送重发请求,以使得发送端根据重发请求携带的缺失的文件片的信息,发送缺失的文件片的信息对应的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
本发明另一实施例公开一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的基于UDP协议的文件断点续传方法,例如包括:基于UDP协议向接收端发送全部数据包;若通过预先建立的TCP通道接收到接收端发送的重发请求,则将重发请求携带的文件片信息对应的数据包存储于文件片重发区;若判断获知基于UDP协议向接收端已发送一次全部数据包,且文件片重发区不为空,则基于UDP协议向接收端发送文件片重发区中的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的;重发请求携带的文件片信息,为接收端缺失的文件片的信息;或者包括:基于UDP协议接收发送端发送的数据包;若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向发送端发送重发请求,以使得发送端根据重发请求携带的缺失的文件片的信息,发送缺失的文件片的信息对应的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
此外,上述的存储器1102中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明另一实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述各方法实施例所提供的基于UDP协议的文件断点续传方法,例如包括:基于UDP协议向接收端发送全部数据包;若通过预先建立的TCP通道接收到接收端发送的重发请求,则将重发请求携带的文件片信息对应的数据包存储于文件片重发区;若判断获知基于UDP协议向接收端已发送一次全部数据包,且文件片重发区不为空,则基于UDP协议向接收端发送文件片重发区中的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的;重发请求携带的文件片信息,为接收端缺失的文件片的信息;或者包括:基于UDP协议接收发送端发送的数据包;若根据已接收的数据包判断获知存在缺失的文件片,则通过预先建立的TCP通道,向发送端发送重发请求,以使得发送端根据重发请求携带的缺失的文件片的信息,发送缺失的文件片的信息对应的数据包;其中,数据包包括文件片及文件片在文件中的位置;文件片,是对文件进行分割获得的。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行上述各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。