文件批量传输组件原理说明

    文件批量传输组件主要技术是使用Socket编程和线程池进行文件传输和消息传递。

两台主机之间文件单向传输

图1 两台主机单向传送文件的工作图

        两台主机之间单向传输的流程是文件接收主机(C主机)进行端口监听,发送文件主机(A主机)定时扫描监控要传输的文件夹,当有新文件时,则向C主机的监听端口进行Socket连接,进行文件传输, 完成后加入缓存,下次扫描不会对此文件进行传输。

       其详细的流程如下图:

       1、发送文件主机会每隔一定时间进行文件夹扫描任务,扫描时先判断是否正在进行传输中,如果正在传输,则结束,没有则进行扫描文件夹。

       2、每扫描到一个文件时,会在缓存中进行查询,查看缓存中有没有存在该文件信息,如果存在,则查看传输有没有成功,如果传输成功,则不入队列。否则要进行入队列传输,并在缓存中进行相应更新。

       3、队列传输采用线程池并发进行,使用Socket向接收文件主机的监听端口进行连接,先发送文件名,文件长度,文件md5等信息,文件接收服务器会把文件以原来一样的相对路径进行存储,并计算存储了的文件的md5,进行比较,如果md5相同,则表示传输成功,在本次Socket连接中返回成功标记。如果md5不相同,则是传输失败,返回失败标记。断开此次Socket连接。

       4、文件传送返回成功与否的标记,进行回调。传输成功了在缓存中更新该文件的状态。如果失败,则进行重新传输,最多重传3次。

       5、发送文件主机的整个从扫描到全部文件传输完成,都是要进行时间记录,由于采用异步和多线程,主线程程序运行结束,而子线程还在运行,因此对其线程回调时要进行状态计数,才能知道什么时候全部文件传输完了。

图2 发送文件的主要流程

主机经过中转服务器传输

图3 中转传输工作图

        对于外网主机传输文件到内网主机,就要有一台中转服务器把文件进行中转,其流程是文件发送主机(A主机)定时进行文件夹监控,将新文件通过中转服务器(B主机)的端口连接发送文件,中转服务器成功接收后,将其保存于文件夹,并触发事件将此文件向目标主机(C主机)发送文件,C主机接收文件后,中转服务器回调要向文件发送主机(A主机)的消息接收端口进行连接,发送C主机传送情况。A主机再将对于的文件的传送状态进行更新。

 

转载于:https://my.oschina.net/passerman/blog/715707

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值