I want help with Java Threaded-Socket Download Server and Java Client, the question on the attachment
Assign6: Java ThreadedSocket Download Server and Java Client for the Media Library.
The learning outcomes of this assignment are:
6. Knowledge in designing and devloping a socket protocol.
Knowledge in implementing socket communications between a client and a server in Java.
Effectively utilizing threading to implement socket server in Java.
Knowledge working with the Ant build tool and the commandline for developing distributed applications.
Experience working with socket byte input and output streams in Java so that the server (client) will work with programs written in other languages.
Experience working with Java Swing UI components (especially JTree) and JavaFX for media playback.
In this assignment, there are two objectives. ?
? You should create a Java threaded socket server and client for downloading media files for the Media Library application.
You should create a Java Swing UI controller class that supports user browsing of the Media Library. This UI will also have the ability to play the downloaded media files. ?
This assignment adds media file download for the Media Library.
Whenever media is added to the library, the media should be stored ?
? (filename is a property of a Media Description) on the server so it can be downloaded from the server to clients for playback.
In this assignment, you are to create a threaded socket download server for media (mp3 or mp4) files. Modify your prior Java solution so that the client uses the socket server to download media
when a title is played. When the user requests Play for the selected
media title, the client should contact the download server to request download of the file. Your client should never store more than one song and one video file, and your client should completely download a media file before beginning to play the file.
The client should download a single mp3 or mp4 file to play when
the Play menu item is selected. The downloaded file should be stored in the DataClient directory of the project directory Assign6.
The Media Application Client that you developed in C++ does not need to be modified to work with the download server. Instead, complete the Java Client so that it works with both the C++ JsonRPC MediaLibrary server and with the Java download server.
The download server is a program separate from the Java MusicLibraryApp. The download server should provide the following features:
The server accepts socket connections from clients on port 3030.
After establishing a client connection, the server creates a new thread that manages communications with the connected client.
The server(thread) is capable of performing downloads of media files
Download a mp3 music file, or download an mp4 video. The filename requested should exist in the server's DataServer folder.
After the server completes the operation requested by the client, the client's thread completes.
When selecting the Play menu item, the client should download the appropriate song and play it. Selecting the Play menu item should cause a new thread to start. The thread contacts the download server to download the requested song. The client should
store the downloaded media file in a folder named DataClient. The DataClient folder should never contain more than a single media file. After the media has been stored to the DataClient folder, the media is played in the same thread.
Here are examples to use as the basis for you Java development.
? groupSerializeSocket.jar. This project contains a sample threaded socket server and client that downloads a Java serialized file and deserializes it on the client side. ?
? guiDemo.jar. This project contains both Java Swing UI and C+
+ FLTK. In this assignment, use the Java as an example of Jtree manipulation. ?
? mediaPlayerWeb.jar This project provides the View classes and
media playback in JavaFX/Swing that can be used in completing this assignment. You will need to provide the Controller for the Java client (only) that communicates with the servers (C++ JsonRPC MediaLibrary server, and Java Download server) which provide the underlying Model for the application. ?
? You should also refer to the threaded socket server and client example project referenced in the class notes on Sockets ? Build File Support
Add to the Ant build file target to build and the execute download server. Name the targets build.downserver, and execute.downserver.
Your solution will be graded by extracting it on a Raspberry Pi and running the servers. The client will be run from a VB Debian machine. Your servers and client should take command line inputs that allow the server host, JsonRPC port and DownloadServer port to be specified when invoking the client.
In grading your program, the project will be cleaned and then rebuilt. Your server and client should be capable of being built and
invoked on different hosts as specified with command line input, which is given values using Ant properties. Structure of your Solution Directory
Add a new subdirectory src/java/dserver. Otherwise, the project structure should match the calculator JsonRPC example used as the basis for the C++ only previous assignment. Name the project directory Assign6. Grading your project will be done by extracting
the jar and executing the project using Ant (build.xml) from the commandline. What To HandIn
You will handin this program by uploading a jar of the solution on
When extracted, your solution jar file should create the directory Assign6 as a cleaned project folder. Create your jar file from a command line whose current working directory is Assign6's parent
directory. Execute the command: jar cvf assign6.jar Assign6
Before you submit assign6myname.jar on Blackboard, please do the following: ?
? Check to assure your solution conforms to the directions on this page.
Check grading criteria for this assignment:
Screen shots of Raspberry Pi running download server and C++ Media Library JsonRPC server Screen shot from VB Debian Linux machine showing invocation and sample output from running the client to download an play a media title Project cleans and builds successfully on Debian Linux. Running the Java client and servers allows demonstration of full functionality of both servers and the Java client, including adding, removing, and displaying media files, as well as download and playback of a media title