Ask Computer Engineering Expert

Programming Assignment

File Sharing System (FSS) using only Java sockets

You are charged with building a simple file sharing system (FSS) using a simple command line interface. The FSS consists of two types of entities: a file server and many clients. In this FSS:

• The client MUST be able to upload files to the file server. It's fine to upload them one at a time. If the file already exists, replace it.

• The client MUST be able to download a given file from the file server, by providing the full filename path to the file server. If the file does not already exist, it MUST return an error message on standard error and return a non-zero error code.

• The client MUST be able to list the file system objects (files and directories) on a file server directory, including the file server's root ("/") directory. If the requested directory does not exist, it MUST report an error message on standard error and return a non-zero error code.

• The client MUST be able to create a directory (if the directory does not exist) and remove empty directories (if the directory is empty), and MUST be able to report whether or not these operations succeeded. If there's an error, it MUST report an error message on standard error and return a non-zero error code.

• The client MUST be able to remove a given file from the file server, by providing the full filename path to the file server. If the file does not already exist, it MUST return an error message on standard error and return a non-zero error code.

• The file server MUST allow multiple clients to simultaneously connect to a single file server for upload/download, and allow for apparently-simultaneous transfer (e.g., it's NOT okay for the file server to wait for one transfer to complete before another begins).

• Clients MUST be able to cleanly shut down the file server.

• The system MUST support the resume upload and download: If a file transfer between a client and a server is interrupted (because the network, server, or client has failed), the same client MUST be able to resume upload/download at the file server from the same point of progress by re-requesting the same filename. In other words, the client MUST NOT have to upload/download the data that is already uploaded/downloaded. Note that you have to handle server crashes too - you may want to use "flush()" in the server. In order for the TA to verify that you have implemented this functionality the program MUST print the progress of upload/download as it's proceeding, including an indication that a partial download is skipping re-download of some portion of the file.

The client will need to know how to contact the server; for this exercise, the client MUST accept this in an environment variable named PA1_SERVER with the computer name, a colon, and the TCP portnumber (e.g., "localhost:8000"). The server will need a place to store its data; its file system "root" MUST be the current directory for when it is started.

Do not make any other assumptions about the properties of the file. The file sharing system MUST be able to exchange files of any type and with arbitrary filenames. Note: Linux/Unix filesystems are normally case-sensitive, but Windows/MacOS are normally case-insensitive; you don't need to provide case-sensitive functionality on non-case-sensitive systems, but it MUST maintain the upper/lower case provided to it since that information matters on some systems. If there's no error, return an error code of 0 (no error).

When developing your system you MUST use Java, and for the networking portions you MUST use ONLY the Java sockets libraries (no JMI, etc.). No other use of third party software is allowed, unless explicitly permitted by the instructor. For purposes of this exercise we'll totally ignore security, e.g., no authentication or authorization is needed. Note that illegally downloaded files (i.e., files violating the copyright laws) may not be used for developing, testing, or demoing your assignment.

Deliverables

• Executable and self-contained jar files.
• A read-me text file.
• Source Code in Java.

Executable and self-contained jar files: The program MUST be implemented as a single jar file containing both server and client.

A read-me text file: The text file MUST provide step-by-step instructions for running and testing your software. It MUST also clearly list the location of server's storage folder i.e. the location where the server stores the received files.

Source Code in Java: the source code submitted for your program MUST match the executable jar file.

Below are commands that your system MUST support (we plan to create a test script), in order of the overall requirements above. Unix syntax shown:

java -cp pa1.jar server start &
# To set up client so it knows what server to talk to:
export PA1_SERVER= # On Windows: set PA1_SERVER=.....
java -cp pa1.jar client upload
java -cp pa1.jar client download
java -cp pa1.jar client dir
java -cp pa1.jar client mkdir
java -cp pa1.jar client rmdir
java -cp pa1.jar client rm
java -cp pa1.jar client shutdown

Below is an example:
mkdir -p server ; cd server
java -cp pa1.jar server start 8000
cd .. ; mkdir -p client1 ; cd client1
export PA1_SERVER=localhost:8000
java -cp pa1.jar client upload text1.pdf /folders/text1.pdf
Uploading file .... 50% (changes real-time)
File uploaded.
(start another client)
cd ..; mkdir -p client2 ; cd client2
java -cp pa1.jar client download /folders/text1.pdf copy_of_text1.pdf
Downloading file .... 50% (changes real-time)
File Downloaded.
java -cp pa1.jar client shutdown

Wrong instructions or faulty jar file would prevent the TA from grading your assignment.

Turn in your program (both source code and compiled jar) via Blackboard.

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92775306

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As