TCP传输大文件问题总结

来源:互联网 发布:ubuntu wireshark lua 编辑:程序博客网 时间:2024/06/05 01:01

近日的项目中,用到了大文件的传输,遇到了一些问题,总结如下:

1.      基本思路:

1)  大文件的传输,需要分解成小包,再进行传输

2)  发送方和接收方建立链接,当接收方同意接收后,发送同意接收标志。发送方开始发送数据第一个小包,包括文件名称、文件大小、发送小包ID、小包字节内容

3)  接收方接收数据,根据需要建立文件存储需要的字节数组,并将小包内容依次放入数组对应位置

4)  接收方的返回数据,包括文件名称、文件大小、文件已接收小包ID

5) 发送方根据接收方的返回值,来进行下一步的发送操作,或接收完成

2.      具体做法:

      在发送端,将文件按一定大小分成多个小包,并按照小包ID和小包字节内容包对应的方式存入Arraylist中;

      当收到接收方同意接收的信号后,发送第一个小包,并等待返回结果。而对接收方来说,当接收到发送方的信号后,如果同意接收并且为第一个数据包时,则创建接收文件的输出流FileOutputStream,并将数据包内容写入该输出流中,如果是其他包,则依次写入输出流文件中,直到结束。

     发送方每次等待接收方信号进行依次发送数据包,如果收到接收完成的标志,则关闭文件。

     接收方接收完毕后,关闭输出流文件。

 3.    结论:

       因为此种方法的传送和接收是一一对应的关系,避免文件信息重组错乱的问题,保证了文件的有效重组。当然此种方式采用的是TCP长连接的方式,可能在效率方面还可以进行进一步的改进,后期可以继续进行优化。就满足大文件的传输方面,完全可以达到要求。

 

 

原创粉丝点击