TCP传输大文件问题总结
来源:互联网 发布:ubuntu wireshark lua 编辑:程序博客网 时间:2024/06/05 01:01
近日的项目中,用到了大文件的传输,遇到了一些问题,总结如下:
1. 基本思路:
1) 大文件的传输,需要分解成小包,再进行传输
2) 发送方和接收方建立链接,当接收方同意接收后,发送同意接收标志。发送方开始发送数据第一个小包,包括文件名称、文件大小、发送小包ID、小包字节内容
3) 接收方接收数据,根据需要建立文件存储需要的字节数组,并将小包内容依次放入数组对应位置
4) 接收方的返回数据,包括文件名称、文件大小、文件已接收小包ID
5) 发送方根据接收方的返回值,来进行下一步的发送操作,或接收完成
2. 具体做法:
在发送端,将文件按一定大小分成多个小包,并按照小包ID和小包字节内容包对应的方式存入Arraylist中;
当收到接收方同意接收的信号后,发送第一个小包,并等待返回结果。而对接收方来说,当接收到发送方的信号后,如果同意接收并且为第一个数据包时,则创建接收文件的输出流FileOutputStream,并将数据包内容写入该输出流中,如果是其他包,则依次写入输出流文件中,直到结束。
发送方每次等待接收方信号进行依次发送数据包,如果收到接收完成的标志,则关闭文件。
接收方接收完毕后,关闭输出流文件。
3. 结论:
因为此种方法的传送和接收是一一对应的关系,避免文件信息重组错乱的问题,保证了文件的有效重组。当然此种方式采用的是TCP长连接的方式,可能在效率方面还可以进行进一步的改进,后期可以继续进行优化。就满足大文件的传输方面,完全可以达到要求。
- TCP传输大文件问题总结
- c#TCP传输大文件
- 基于TCP协议传输大文件
- TCP传输大文件(图片、文档)
- TCP传输大文件(图片、文档)
- 局域网传输大文件问题
- tcp传输大文件接受后不完整的错误
- Android 中 Socket 基于TCP 传输大文件
- Windows Socket编程之TCP实现大文件的传输
- Java实现 Windows Socket TCP实现大文件的传输
- Tcp传输文件
- python TCP传输文件
- java实现TCP与UDP混合传输文件总结
- Qt中tcp传输文件遇到的问题
- C/C++大文件/数据网络传输方法总结
- C/C++大文件/数据网络传输方法总结
- C/C++大文件/数据网络传输方法总结
- webservice传输大文件
- Cocos2d-x 3.0 TestCpp android编译出错 解决 error: expected ';' at end of member declaration
- 新打开acitivyt时,EditText焦点自动带出软键盘问题解决方法总结
- INCREMENTAL(增量链接)
- 本人所接触的(用到的或者仅仅是了解的)技术和工具
- UVA 10375 (13.11.07)
- TCP传输大文件问题总结
- 高级 Razor : Templated Razor Delegate
- DP 入门题COJ 1788
- #pragma comment
- 计算机的计量单位KMGTPEZY
- C++中的宏定义
- js弹框alert出现乱码
- c#中用默认浏览器打开页面
- Python中文问题