You are charged with building a simple file sharing system. The file sharing system should be
able to exchange files of any type and arbitrary names. The file sharing system consists of two
types of entities: file servers and clients. A client may share its files by uploading them to one of
the file servers. A file server stores and serves the files for download. For your first
programming assignment, you are expected to develop the following functionalities:
The ability for the client to upload files to a server.
The ability for the client to download files from a server.
Your implementation should allow for multiple clients and servers. The client should
provide the ability for the user to select which file server to use for each
upload/download.
The ability to resume upload and download. If file transfer between a client and a server
is interrupted (because network, server, or client has failed), the client should be able to
resume download from the same or another file server (assuming the file exists on
another file server), and the client should be able to resume upload to the same server.
In other words, the client should not have to upload/download the data that is already
uploaded/downloaded. Please make it clear in your read me file how the TA should
verify that you have implemented this functionality.
You can assume the file name is a unique identifier in the entire distributed system.
Do not make any other assumptions about the properties of the file.
You may only use Java sockets library for developing your system. No other use of third party
software is allowed, unless explicitly permitted by the instructor.
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference
and should not be submitted as is. We are not held liable for any misuse of the solutions.
Please see the frequently asked questions page
for further questions and inquiries.
Kindly complete the form.
Please provide a valid email address and we will get back to you within 24 hours.
Payment is through PayPal, Buy me a Coffee
or Cryptocurrency.
We are a nonprofit organization however we need funds to keep this organization operating
and to be able to complete our research and development projects.