问题描述
- c/c++ socket实现网盘
-
老师布置这样一个作业,以Linux作服务器做一个网盘,要求断点续传和多用户上传同一文件,有几个问题没想明白,想问问。
1、断点续传的话,应该可以通过记录已上传文件的大小来实现。client上传文件的时候,server回复已上传的大小,然后client就跳过已上传的部分。
2、但是,多用户上传同一个文件要怎么实现?怎么把一个大文件的不同部分分配给各个client分别上传?如果上传期间有新的client上传,或者正在上传的client退出,原来的分配计划也要动态更改。
我目前的想法是,server收到上传的请求后,得到文件的大小,然后把文件分成若干个固定大小(m 字节)的块。然后server发送一个块号k给client,client就发送文件的第k块给server。server再根据块号的大小顺序保存client发来的数据。多个用户同时上传时,server就依次发送不同的块号给各个client。
我想问问有没有更好的方案。
解决方案
转换思维,客户端自己记录文件下载的偏移量,断点续传的时候携带偏移量发送给服务端
时间: 2024-09-26 22:30:40