Coder Social home page Coder Social logo

cs303-assginment2-file-transfer's Introduction

CS209 Assignment2 File Transfer

在这次的Assignment当中,需要实现⼀个客户端-服务端模型的⽂件传输。这次作业要求使⽤socket与多线 程的知识来完成。具体的实现框架里不能使⽤第三方库。

1.文件传输 (60pts)

在这个部分,你需要完成以下功能:

1-1 上传文件 (30pts)

对于客户端,你可以在本地的任何⼀个位置来指定上传的文件夹。这⾥约定在客户端上传的⽂件夹名称叫做 Upload。在服务端,你也可以指定任何⼀个位置来存储客户端上传的⽂件夹。这⾥约定在服务端中存储客户 端上传的⽂件夹名称叫做Storage。

对于每⼀次上传,就是客户端对服务端进⾏请求-上传的操作。这⾥需要对Upload内所有的文件并发执行。 也就是说,你的上传任务不应该是排队等待上⼀个上传任务完成,⽽是可以多个上传任务⼀起执⾏。为了简 化任务,上传任务以及下⾯的下载任务不需要进⾏安全检查

这⾥我们的Upload中可能会出现⽂件夹嵌套,即Upload中可能会有子文件夹,子文件夹中⼜可能有⽂件 夹。对于这个任务,你只需要演示如下内容: 1.成功上传⼀个⽂件 2.成功并发的上传若干文件,这⾥若干只需要⾄少⼤于等于5 3.客户端在上传的过程中,提供指令查询所有上传任务的进度(传输多少字节数),并且在上传成功后 服务端有提示说明

1-2 下载文件

对于这个任务,需要实现客户端从服务端下载⽂件。为了简化问题,我们约定客户端从服务端的Resources ⽂件夹(与Storage同级)中获取客户端要下载的⽂件,下载到客户端中的Download⽂件夹(与Upload同 级)下。 具体的,客户端可以做⼀个请求-查询操作,服务端会返回Resources文件夹内有什么⽂件或⽂件夹 (Resources中也可能出现⽂件夹嵌套)。客户端可以根据服务端有的资源进⾏请求-下载的操作,接着从 Resources⽬录下载其请求的某个⽂件或者某个⽂件夹下的所有⽂件。同样的,如果涉及到下载多个⽂件, 下载也要求并发执⾏。 对于这个任务,你只需要演示如下内容: 1.成功下载⼀个⽂件 2.成功并发的下载若⼲⽂件,这⾥若⼲只需要⾄少⼤于等于5即可 3.客户端在下载的过程中,提供指令查询所有下载任务的进度(传输多少字节数),并且在下载成功后 客户端有提示说明。

2.传输中断+恢复 (40pts)

⽆论是上传还是下载,假如⽤户发现自己不小心上传或者下载错误了,肯定希望暂停这次传输任务来确认是 否继续执⾏。因此对于上⾯的文件传输过程,需要进⼀步提供暂停传输并且之后自己可以手动恢复传输的操作,以及取消任务的操作。

2-1 上传中断+恢复 (20pts)

对于上传文件来说,客户端可以选择上传的某个或者某些任务暂停。暂停以后,这些任务并没有被取消。之 后,你可以选择让他们恢复继续上传,需要保证的是暂停的任务应当从暂停时的进度出发开始继续任务而不 是重新执行了上传任务。 对于这个任务,你只需要演示如下内容:

1.成功暂停/恢复⼀个任务,并且暂停时这个任务⼀直在你的任务队列⾥没有消失直到你取消任务或者恢复任务

2.成功暂停/恢复多个任务,暂停时的要求同1

3.提供命令查询当前所有的上传任务,并展示他们的进度以及状态(进⾏中/暂停)。

4.提供命令取消某个或某些上传任务。

2-2 下载中断+恢复 (20pts)

对于下载文件来说,客户端发送的请求-下载可以选择下载的某个或者某些任务暂停。暂停以后,这些任务并 没有被取消。之后,你可以选择让他们恢复继续下载,需要保证的是暂停的任务应当从暂停时的进度出发开 始继续任务⽽不是重新执⾏了下载任务。 对于这个任务,你只需要演示如下内容:

1.成功暂停/恢复⼀个任务,并且暂停时这个任务⼀直在你的任务队列⾥没有消失直到你取消任务或者恢复任务

2.成功暂停/恢复多个任务,暂停时的要求同1。

3.提供命令查询当前所有的下载任务,并展示他们的进度以及状态(进行中/暂停)

4.提供命令取消某个或某些下载任务

cs303-assginment2-file-transfer's People

Contributors

ln57421 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.