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.

Academic Honesty!
It is not our intention to break the school's academic policy. Projects posted are only 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 fill out the form. Please provide a valid email address and we'll get back to you in less than 24 hours. We will be sending an invoice through PayPal upon confirmation. We are a non profit organization however we need an amount to keep this organization running, and to be able to complete our research and development.