本发明涉及文件传输,具体涉及一种高可靠性文件传输方法及文件传输装置。
背景技术:
1、目前能够进行文件传输的协议与软件有很多,如:协议有fftp、scp、ftp等,软件有winscp、mobaxterm等,这些文件传输工具可以用于日常办公中,在有人看守的场景下可以满足大多数用户的需求。
2、实际工程应用中存在两台设备间进行高可靠文件传输的场景,尤其是在网络条件很差的环境,例如两台设备间可能突然断网几小时甚至几天,当网络恢复以后,需要继续之前的文件传输。并且当两台设备有一台重启了,也需要继续之前的文件传输,目前没有协议或软件传输方案能满足这一需求。
3、cn 114448971a 提出了一种嵌入式系统的数据加载方法,解决了断点传输问题,但该方法只适用于嵌入式系统,不能用于一般的上位机系统。此外,该方法并没有摆脱传统的由文件持有方主动向文件未持有方发送文件包的思想, 传统的文件传输方式是,持有文件的一方,向另一方发起文件传输申请,然后将文件传输(推送)到另一方,中间的传输状态与进度由持有文件的一方把控。
技术实现思路
1、发明目的:本发明目的在于针对现有技术的不足,提供一种高可靠性文件传输方法及文件传输装置,支持断点续传,并且能够在网络环境很差的情况下实现文件传输。
2、技术方案:本发明所述高可靠性文件传输方法,包括如下步骤:
3、s1:文件未持有方向文件持有方发起的首次索要文件请求;
4、s2:文件持有方根据所述首次索要文件请求,查找第一个传输状态为“未传输”的文件,读取文件至内存,并将文件分包,计算总包数,将包含文件名字、总包数的文件数据返回至文件未持有方;
5、s3:文件未持有方根据文件持有方返回的包含文件名字、总包数的文件数据生成n个数据包请求,每个数据包请求包括文件名字、第i包数据,i=1、…、n;
6、s4:文件未持有方向文件持有方发起第1个数据包请求,文件持有方根据文件未持有方的第1个数据包请求,返回文件未持有方对应第1个数据包请求的第1包数据及包大小;
7、s5:文件未持有方向文件持有方发起剩下的数据包请求,文件持有方返回对应数据包请求的第几包数据及包大小,直至返回文件未持有方第n个数据包请求对应的第n包数据及包大小;
8、s6:文件持有方将传输状态置为“已传输”。
9、文件未持有方首次请求的内容很简单,就是告诉文件持有方“我想要文件”,这是首次文件索要请求,跟后面的请求不一样,这个请求的目的是要让文件持有方返回文件名字和总包数。
10、进一步完善上述技术方案,所述文件持有方将待传输文件按照文件名字、传输状态存储至数据库,初始传输状态为“未传输”,已传输完毕的传输状态置为“已传输”。
11、进一步地,若文件未持有方向文件持有方发起数据包请求的过程中出现断网,文件未持有方检查请求是否超时,若超时,文件未持有方收到传输协议返回的失败信息,并持续向文件持有方发起数据包请求直至网络恢复。因为网络不通,会导致数据发送超时,接收端收到底层tcp协议返回失败。
12、进一步地,若文件未持有方向文件持有方发起数据包请求的过程中,文件持有方出现重启,文件持有方重启后根据文件未持有方发送的数据请求包中的文件名字、需要的第m包数据,打开相应的文件,并返回第m包数据及包大小,。
13、进一步地,若文件未持有方向文件持有方发起数据包请求的过程中,文件未持有方出现重启,文件未持有方重启后重新向文件持有方发起首次索要文件请求,然后执行所述s2至s6。
14、进一步地,所述文件持有方发送数据包及包大小的时候进行编码操作,所述文件未持有方接收数据包、包大小的时候进行解码操作。
15、进一步地,所述s4、s5步骤中数据包及包大小的传输过程进行md5校验。
16、第二方面,本发明提供一种文件传输装置,应用于文件未持有方,包括:
17、请求模块,用于向文件持有方发起首次索要文件请求;
18、数据包生成模块,用于根据文件持有方返回的包含文件名字、总包数的文件数据生成n个数据包请求,每个数据包请求包括文件名字、第i包数据,i=1、…、n;
19、数据包请求模块,用于向文件持有方发起数据包请求;
20、数据包接收模块,用于接收与数据包请求对应的数据包、包大小。
21、第三方面,本发明提供一种文件传输装置,应用于文件持有方,包括:
22、文件分包模块,用于接收文件持有方的首次索要文件请求,根据首次索要文件请求在数据库中读取第一个状态为“未传输”的文件至内存,并将文件分包,计算总包数,以得到包含文件名字、总包数的文件数据;
23、发送模块,用于发送包含文件名字、总包数的文件数据至文件未持有方;
24、数据包返回模块,用于根据文件未持有方的数据包请求,发送对应数据包请求的数据包及包大小至文件未持有方;
25、状态调整模块,用于将传输完毕后文件的状态调整为“已传输”。
26、有益效果:与现有技术相比,本发明的优点在于:本发明采用的文件传输方式为:未持有文件的一方主动向持有文件的一方发起索取文件申请,中间的传输状态与进度由未持有文件的一方把控,整个过程未持有文件的一方会不断的给持有文件的一方发送数据包请求,直到收到持有文件的一方返回数据包,文件传输是1至n个顺序传输,需要索要哪一包由文件接收端指定。
27、该方法支持断点续传,且当网络很差时,无论断网多长时间(理论上可以无限大),至网络恢复时,可以断点续传;当文件持有方和未持有文件方设备有一台重启了,重启后,继续进行文件传输。
1.一种高可靠性文件传输方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的高可靠性文件传输方法,其特征在于:所述文件持有方将待传输文件按照文件名字、传输状态存储至数据库,初始传输状态为“未传输”,已传输完毕的传输状态置为“已传输”。
3.根据权利要求1所述的高可靠性文件传输方法,其特征在于:若文件未持有方向文件持有方发起数据包请求的过程中出现断网,文件未持有方检查请求是否超时,若超时,文件未持有方收到传输协议返回的失败信息,并持续向文件持有方发起数据包请求直至网络恢复。
4.根据权利要求1所述的高可靠性文件传输方法,其特征在于:若文件未持有方向文件持有方发起数据包请求的过程中,文件持有方出现重启,文件持有方重启后根据文件未持有方发送的数据请求包中的文件名字、需要的第m包数据,打开相应的文件,并返回第m包数据及包大小,。
5.根据权利要求1所述的高可靠性文件传输方法,其特征在于:若文件未持有方向文件持有方发起数据包请求的过程中,文件未持有方出现重启,文件未持有方重启后重新向文件持有方发起首次索要文件请求,然后执行所述s2至s6。
6.根据权利要求1所述的高可靠性文件传输方法,其特征在于:所述文件持有方发送数据包及包大小的时候进行编码操作,所述文件未持有方接收数据包、包大小的时候进行解码操作。
7.根据权利要求1所述的高可靠性文件传输方法,其特征在于:所述s4、s5步骤中数据包及包大小的传输过程进行md5校验。
8.一种文件传输装置,应用于文件未持有方,其特征在于,包括:
9.一种文件传输装置,应用于文件持有方,其特征在于,包括: