一种基于UDP协议无窗口可随机选取的文件传输方法技术

技术编号:26693873 阅读:27 留言:0更新日期:2020-12-12 02:50
一种基于UDP协议无窗口可随机选取的文件传输方法,包括以下步骤:服务器端根据传输线程数量将文件分割成对应数量的数据包并对数据包标注,并基于UDP协议多线程发送数据包及数据包标注信息至客户端;客户端接收数据包及数据包标注信息,校验数据包是否为有效数据包,校验数据包是否为已接收数据包,在文件缓存区校验并将数据写入对应位置;启动定时器,客户端检查文件缓存区接收情况,统计丢包数据位置发送给服务器端请求对应数据包;服务器端根据客户端请求检索对应数据包及数据包标注信息发送至客户端,在文件缓存区效验保证文件传输的准确性,及根据传输线程数量将文件分割成对应数量的数据包进行传送提高传输速度且减少资源浪费。

【技术实现步骤摘要】
一种基于UDP协议无窗口可随机选取的文件传输方法
本专利技术涉及UDP传输
,尤其是一种基于UDP协议无窗口可随机选取的文件传输方法。
技术介绍
在文件传输中,通常使用滑动窗口协议,滑动窗口协议需要逐一等待对端每个数据分片的确认信息,在未收到接收的确认信息前,由窗口决定发送方能发送的最大数据量,滑动窗口协议在多线程编程必需要考虑多线程产生数据乱序的问题。用户数据报协议(UDP,UserDatagramProtocol),又称用户数据报协议,是OSI(开放式系统互联)参考模型中一种无连接的传输层协议,只管发送,能极大的提供网络的发送速度;但因为UDP协议不是面向连接且无序的特性,可能由于网络丢包等原因被未接收到,导致文件不完整,因此需要校验文件保证传输文件的完整性;且多线程重复切片重复发送文件片段也会造成资源浪费。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种基于UDP协议无窗口可随机选取的文件传输方法。本专利技术解决其技术问题是采取以下技术方案实现的:一种基于UDP协议无窗口可随机选取的文件传输方法,该方法包括以下步骤:步骤S1,服务器端读取文件数据,发送文件大小信息至客户端,客户端建立对应缓存区准备接收文件;步骤S2,服务器端根据传输线程数量将文件分割成对应数量的数据包,并对数据包进行标注,服务器端基于UDP协议多线程同时发送数据包及数据包标注信息至客户端;步骤S3,客户端接收数据包及数据包标注信息,校验数据包是否为有效数据包,校验数据包是否为已接收数据包,在文件缓存区校验并将数据写入对应位置;步骤S4,启动定时器,客户端检查文件缓存区数据接收情况,统计丢包数据位置并发送给服务器端,请求对应数据包;服务器端根据客户端请求检索对应数据包及数据包标注信息发送至客户端;步骤S5,客户端继续定时检查文件,对比文件缓存区缓存的文件大小与实际发送文件大小,若一致,客户端发送停止文件发送指令至服务器端,服务器端关闭文件传输线程;步骤S6,客户端关闭文件接收线程,关闭定时器并将文件缓存区的数据写入硬盘。优选的,所述步骤S3包括:步骤S3-1,客户端接收读取数据包及数据包标注信息,确定数据包为有效数据包;步骤S3-2,客户端接收读取数据包及数据包标注信息,数据包为无效数据包,直接丢弃数据包不做处理。优选的,所述步骤S3还包括:步骤S3-3,读取有效数据包数据,数据对应的文件实际位置,与文件缓存区中相应位置数据做比较,确定数据为未写入数据,则写入文件缓存区对应位置;步骤S3-4,确定数据为文件缓存区已写入数据,则直接丢弃数据。优选的,所述步骤S2包括:步骤S2-1,服务器端读取文件,启用多线程并为线程编号;步骤S2-2,线程根据编号,以给定算法读取切割文件数据,以UDP协议格式封装数据包,标注每个数据包起始点、终止点及数据包实际大小;步骤S2-3,线程各自将数据包及数据包标注信息发送至客户端。优选的,所述以给定算法读取切割文件数据的算法为:设编号为N,编号从1开始,线程总数为A;每次可读取文件数据的最大值D;每个线程循环读取的次数为I,从0开始计算;每次以((N-1)+A*I)*D为起始位置读取文件。优选的,所述步骤S4包括:步骤S4-1,启动一个定时器,客户端定时检测文件缓存区,若发现未接收数据,则将未接收数据的位置信息及大小信息的指令发至服务器端,重新请求对应数据包;步骤S4-2,服务器端收到客户端请求,根据请求信息,检索需要重发的数据包;步骤S4-3,服务器端告知客户端收到指令,并打包发送对应数据包,重复所述步骤S2-2;步骤S4-4,客户端继续接收数据并检查文件缓存区数据,重复所述步骤S3。优选的,所述步骤S5包括:步骤S5-1,客户端检查文件缓存区缓存的文件大小与实际发送文件大小一致,告知服务器端停止文件发送;步骤S5-2,服务器端接收停止文件发送指令,停止发送数据包,关闭文件传输线程。本专利技术的优点和积极效果是:1.本专利技术包括以下步骤:客户端接收数据包及数据包标注信息,校验数据包是否为有效数据包,校验数据包是否为已接收数据包,在文件缓存区校验并将数据写入对应位置;启动定时器,客户端检查文件缓存区数据接收情况,统计丢包数据位置并发送给服务器端,请求对应数据包;服务器端根据客户端请求检索对应数据包及数据包标注信息发送至客户端,在文件缓存区进行效验保证文件传输的准确性。2.本专利技术包括以下步骤:服务器端根据传输线程数量将文件分割成对应数量的数据包,并对数据包进行标注,服务器端基于UDP协议多线程同时发送数据包及数据包标注信息至客户端,提高传输速度且减少资源浪费。附图说明图1是本专利技术的步骤S1至步骤S6示意图;图2是本专利技术的步骤S2-1至步骤S4-4示意图;图3是本专利技术的步骤S3-1至步骤S4-4示意图。具体实施方式以下结合附图对本专利技术实施例做进一步详述:如图1-3所示,一种基于UDP协议无窗口可随机选取的文件传输方法,该方法包括以下步骤:步骤S1,服务器端读取文件数据,发送文件大小信息至客户端,客户端建立对应缓存区准备接收文件;步骤S2,服务器端根据传输线程数量将文件分割成对应数量的数据包,并对数据包进行标注,服务器端基于UDP协议多线程同时发送数据包及数据包标注信息至客户端。进一步地,所述步骤S2包括:步骤S2-1,服务器端读取文件,启用多线程并为线程编号;步骤S2-2,线程根据编号,以给定算法读取切割文件数据,以UDP协议格式封装数据包,标注每个数据包起始点、终止点及数据包实际大小;步骤S2-3,线程各自将数据包及数据包标注信息发送至客户端。进一步地,所述以给定算法读取切割文件数据的算法为:设编号为N,编号从1开始,线程总数为A;每次可读取文件数据的最大值D;每个线程循环读取的次数为I,从0开始计算;读取的文件总大小为filesize;文件未读取的数据大小为lastsize;每次以((N-1)+A*I)*D为起始位置读取文件;lastsize=filesize-((N-1)+A*I)*D;若lastsize>D,则每次读取D大小数据块;若lastsize<=D,且lastsize>0,则每次读取lastsize大小数据块,并结束读取;若lastsize<0则直接结束读取;具体的,在实施例中,文件大小为101K,现程序配置的用于切割打包文件的线程数量为3个,分别为线程N1、N2及N3,每次可读取文件数据的最大值为5;并为每个线程设置单独的文件读取计数器I,I从零开始计算;则N1线程按照公式分别从0K、15K、30K...本文档来自技高网...

【技术保护点】
1.一种基于UDP协议无窗口可随机选取的文件传输方法,其特征在于:该方法包括以下步骤:/n步骤S1,服务器端读取文件数据,发送文件大小信息至客户端,客户端建立对应缓存区准备接收文件;/n步骤S2,服务器端根据传输线程数量将文件分割成对应数量的数据包,并对数据包进行标注,服务器端基于UDP协议多线程同时发送数据包及数据包标注信息至客户端;/n步骤S3,客户端接收数据包及数据包标注信息,校验数据包是否为有效数据包,校验数据包是否为已接收数据包,在文件缓存区校验并将数据写入对应位置;/n步骤S4,启动定时器,客户端检查文件缓存区数据接收情况,统计丢包数据位置并发送给服务器端,请求对应数据包;服务器端根据客户端请求检索对应数据包及数据包标注信息发送至客户端;/n步骤S5,客户端继续定时检查文件,对比文件缓存区缓存的文件大小与实际发送文件大小,若一致,客户端发送停止文件发送指令至服务器端,服务器端关闭文件传输线程;/n步骤S6,客户端关闭文件接收线程,关闭定时器并将文件缓存区的数据写入硬盘。/n

【技术特征摘要】
1.一种基于UDP协议无窗口可随机选取的文件传输方法,其特征在于:该方法包括以下步骤:
步骤S1,服务器端读取文件数据,发送文件大小信息至客户端,客户端建立对应缓存区准备接收文件;
步骤S2,服务器端根据传输线程数量将文件分割成对应数量的数据包,并对数据包进行标注,服务器端基于UDP协议多线程同时发送数据包及数据包标注信息至客户端;
步骤S3,客户端接收数据包及数据包标注信息,校验数据包是否为有效数据包,校验数据包是否为已接收数据包,在文件缓存区校验并将数据写入对应位置;
步骤S4,启动定时器,客户端检查文件缓存区数据接收情况,统计丢包数据位置并发送给服务器端,请求对应数据包;服务器端根据客户端请求检索对应数据包及数据包标注信息发送至客户端;
步骤S5,客户端继续定时检查文件,对比文件缓存区缓存的文件大小与实际发送文件大小,若一致,客户端发送停止文件发送指令至服务器端,服务器端关闭文件传输线程;
步骤S6,客户端关闭文件接收线程,关闭定时器并将文件缓存区的数据写入硬盘。


2.根据权利要求1所述一种基于UDP协议无窗口可随机选取的文件传输方法,其特征在于:所述步骤S3包括:
步骤S3-1,客户端接收读取数据包及数据包标注信息,确定数据包为有效数据包;
步骤S3-2,客户端接收读取数据包及数据包标注信息,数据包为无效数据包,直接丢弃数据包不做处理。


3.根据权利要求1所述一种基于UDP协议无窗口可随机选取的文件传输方法,其特征在于:所述步骤S3还包括:
步骤S3-3,读取有效数据包数据,数据对应的文件实际位置,与文件缓存区中相应位置数据做比较,确定数据为未写入数据,则写入文件缓存区对应位置;
步骤S3-4,确定数据为文件缓存区已写入数据,则直接丢弃数据。
...

【专利技术属性】
技术研发人员:吴宗鸿
申请(专利权)人:浙江鸿城科技有限责任公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1