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. 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.