读书人

socket 批量文件传输 断点续传如何实现

发布时间: 2012-01-08 22:48:50 作者: rapoo

socket 批量文件传输 断点续传怎么实现?
我大学刚刚毕业,对VC++接触不深.公司笔试有道题,希望各位大侠帮忙看看:
用c/c++套结字实现批量文件传输,实现断点续传。
要怎样实现啊? 谢谢啦

[解决办法]
定好协议
1.文件名称
2.文件大小
3.传了多少

http://www.cnblogs.com/zhanghl/archive/2006/01/10/314244.aspx
[解决办法]
如果你从来没做过socket这个问题是比较麻烦,给你举个例子,你会清楚很多,假如把一个文件夹当成一个文件,你要把这个文件夹从A机拷贝到B机,你会怎么做?显然是你要知道拷贝了多少个文件,还剩多少个文件。socket传输也是一样的道理,如果你传输一个文件这个文件有10个字节,开始你传输了1个字节,如果服务器是受到一个字节就写一个字节到文件,则你知道把这个位置给记下来,下次从这个位置开始传就可以了。
[解决办法]
需要服务端的支持, 客户端请求从哪开始传, 告诉服务端, 服务端根据指令就从相应位置传输.
[解决办法]
分包大小,记录已经传输分包个数

VC->我爱编程群,成立了,群号:65755783,欢迎学习和使用VC的朋友加入
[解决办法]
为传输的文件建立一个相应的配置文件

[解决办法]
你可以看一下FTP协议(RFC959),HTTP协议里也有,

断点续传的关键,就是客户端告诉服务器从哪个字节开始传送,服务器端就从哪个字节开始发送数据。

这样客户端只要记着上次传送到哪个位置,再次传送的时候,直接从这个位置开始就可以了。


[解决办法]
断点续传是必须的,
把数据分包,记录包的编号,
[解决办法]
批量传输,多个线程同时读文件进行发送。
断点,记录每个文件的传输状态,字节数啥的,下次再传相同文件的时候从上次没传完的地方开始就行了。
[解决办法]
断点续传一般是把文件分成固定大小的包,比如128字节为1个包,然后客户端记录下传了多少个完整的包,断了以后,下次再连接的时候直接请求从前一个包那里传。
批量传输,把整个要传输的文件分成N个部分,然后启动N个线程,每个线程负责下载1部分。这样就达到充分利用网络带宽了。

读书人网 >VC/MFC

热点推荐