Question: the server must allow multiple clients connect the server at the same time. You are required to implement a multithreaded server ( using Pthread /

the server must allow multiple clients connect the server at the same time. You are required to implement a multithreaded server (using Pthread/C++Thread or Java thread) and a client that can monitor the servers message and the users input at the same time (e.g. using select()or threads). Besides the original five commands ADD, DELETE, LIST, SHUDOWN, QUIT, you will need to implement five new commands, LOGIN, LOGOUT, WHO, LOOK, UPDATE, on the client side and the corresponding functions on the server side. Note: all users share the same address book. The details of the protocol depend on the command the client sends to the server. LOGIN Identify the user to the remote server. A client that wants to login should begin by sending the ASCII string LOGIN"followed by a space, followed by a UserID, followed by a space, followed by a Password, and followed by the newline character (i.e.,''). Your server should be initialized with the UserIDs and Passwords of at least four users who will be allowed to execute the ADD, DELETE, UPDATE, and SHUTDOWN (the root user only) commands at the server. However, a user is allowed to execute the LIST, WHO, LOOK, and QUIT commands anonymously (without login). When the server receives a LOGIN command from a client, it should check if the UserID and Password are correct and match each other. If they are not correct or dont match each other, the server should return the string 410Wrong UserID or Password,otherwise it should return the 200OKmessage. A client-server interaction with the LOGIN command thus looks like: c: LOGIN john john01 s: 200OK LOGOUT Logout from the server. A user is not allowed to send ADD, DELETE, and SHUTDOWN commands after logout,but it can still send LIST, LOOK, WHO, and QUIT commands. A client-server interaction with the LOGOUT command looks like: 2 c: LOGOUT s: 200OK WHO List all active users, including the UserID and the users IP addresses. A client-server interaction with the WHO command thus looks like: c: WHO s: 200OK The list of the active users: john 141.215.10.30 root 127.0.0.1 LOOK Look up a name in the book. Display the complete name and phone number record. A client sends the ASCII string LOOK"followed by a space, followed by a number (1look for the first name, 2look for the last name, 3look for the phone number),followed by a name or a phone number, and followed by the newline character (i.e.,''). When the server receives a LOOK command from a client, it will look up the name or the phone number in the address book. When there is a match, it returns the 200OKmessage and all the matched record (s).If there is no match, it returns the 404Your search did not match any records. A client-server interaction with the LOOK command thus looks like: c: LOOK 2Miller s: 200OK Found 2match 1001David Miller 313-510-60011004John Miller 315-123-1345 c: LOOK 3313-231-1324 s: 404Your search did not match any records UPDATE Update an existing record in the book and display the updated record. A client sends the ASCII string UPDATE"followed by a space, followed by a Record ID,followed by a number (1 update the first name, 2update the last name, 3update the phone number),followed by a name or a phone number, and followed by the newline character (i.e.,'').The client should then wait for the server to return a "200OK"message (indicating that the record is successfully updated)and followed the updated record, or a "403The Record ID does not exist." 3 A client-server interaction with the UPDATE command thus looks like: c: UPDATE 10012Smich s: 200OK Record 1001updated 1001David Smith 313-510-6001 c: UPDATE 10013313-231-1324 s: 200OK Record 1001updated 1001David Smith 313-231-1324 c: UPDATE 10071John s: 403The Record ID does not exist. ADD and DELETE The basic requirement is the same as the assignment 1except that a user needs to login first to execute these commands. If a user has not logged in,the server will return a "401You are not currently logged in,login first" message LIST Same as the assignment 1. SHUTDOWN The basic requirement is the same as the assignment 1except that only the rootuser can execute this command. When your server receives a SHUTDOWN command from a client, it should check if the current user is the root. If it is not the root user, the server should return a "402User not allowed to execute this command" message. In addition, the SHUTDOWN will make all clients and the server terminate. A client-server interaction with the SHUTDOWN command thus looks like: c: SHUTDOWN s: 200OK At the windows of all clients s: 210the server is about to shutdown ...... QUIT 4If a user logged in from the current client, QUIT also logout the user. give me java code which is correct, error free and complete required to run this program. MultiThreadServer.java
Client.java
ChildThread.java
Makefile and readme file.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!