Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

CODE: class Client { public static void main(String args[]) { try { // Create client socket to connect to certain server (Server IP, Port address)

image text in transcribed

CODE:

class Client { public static void main(String args[]) { try { // Create client socket to connect to certain server (Server IP, Port address) // we use either "localhost" or "127.0.0.1" if the server runs on the same device as the client Socket mySocket = new Socket("127.0.0.1", 6666); // to interact (send data / read incoming data) with the server, we need to create the following: //DataOutputStream object to send data through the socket DataOutputStream outStream = new DataOutputStream(mySocket.getOutputStream()); // BufferReader object to read data coming from the server through the socket BufferedReader inStream = new BufferedReader(new InputStreamReader(mySocket.getInputStream())); String statement = ""; Scanner in = new Scanner(System.in); while(!statement.equals("exit")) { statement = in.nextLine(); // read user input from the terminal data to the server outStream.writeBytes(statement+" "); // send such input data to the server String str = inStream.readLine(); // receive response from server System.out.println(str); // print this response } System.out.println("Closing the connection and the sockets"); // close connection. outStream.close(); inStream.close(); mySocket.close(); } catch (Exception exc) { System.out.println("Error is : " + exc.toString()); } } }
class Server { public static void main(String args[]) { try { // Create server Socket that listens/bonds to port/endpoint address 6666 (any port id of your choice, should be >=1024, as other port addresses are reserved for system use) // The default maximum number of queued incoming connections is 50 (the maximum number of clients to connect to this server) // There is another constructor that can be used to specify the maximum number of connections ServerSocket mySocket = new ServerSocket(6666); System.out.println("Startup the server side over port 6666 ...."); // use the created ServerSocket and accept() to start listening for incoming client requests targeting this server and this port // accept() blocks the current thread (server application) waiting until a connection is requested by a client. // the created connection with a client is represented by the returned Socket object. Socket connectedClient = mySocket.accept(); // reaching this point means that a client established a connection with your server and this particular port. System.out.println("Connection established"); // to interact (read incoming data / send data) with the connected client, we need to create the following: // BufferReader object to read data coming from the client BufferedReader br = new BufferedReader(new InputStreamReader(connectedClient.getInputStream())); // PrintStream object to send data to the connected client PrintStream ps = new PrintStream(connectedClient.getOutputStream()); // Let's keep reading data from the client, as long as the client does't send "exit". String inputData; while (!(inputData = br.readLine()).equals("exit")) { System.out.println("received a message from client: " + inputData); //print the incoming data from the client ps.println("Here is an acknowledgement from the server"); //respond back to the client } System.out.println("Closing the connection and the sockets"); // close the input/output streams and the created client/server sockets ps.close(); br.close(); mySocket.close(); connectedClient.close(); } catch (Exception exc) { System.out.println("Error :" + exc.toString()); } } }

PLEASE BE CLEAR ! ASAP

Task description: In this part, you will update both client and server projects created in taskl with an interactive communication scenario, where a user at the client side can enter a command through the terminal then waits for a response back from the server to be able to send another command. The server handles the received commands and return appropriate results. The following table holds the different supported commands that a user can initiate, along with the proper handle from the server side and the expected response per command. The server keeps a list (Dynamic-size ArrayList or Static-size Array) of integers (initially empty or filled with zeros) and named inputValues to handle (add/remove) commands. If you use ArrayList option you can use the different APIs to add/remove elements. If you use array option, so to add an element, you can replace the first zero with the new element. If you use array option, so to remove an element, replace it with zero. The client initially prints a list of the supported commands for the user to write correct formatted command. If a user sends any other command or a supported command but in a different format, the server should ignore the command and respond with unsupported command" without exiting either the client or the server. Client Supported Commands Server Reaction and response Add: x 1- Add x to the input Values list where x can be any integer value (e.g., Add: 74) 2- Respond with added successfully" Remove: x 1. Remove all occurrences x from the input Values list where x can be any integer value (e.g., Remove: 2) 2- Respond with "removed successfully" Get_Summation 1- Calculate the summation of values in the inputValues list 2- Respond with The summation is x" where x is the summation of all values in the list. If empty list or all elements are zeros, x in the message equals null Get_Minimum 1- Search for the minimum number in the inputValues list 2- Respond with "The minimum isx" where x is the minimum value in the list. If empty list or all elements are zeros, x in the message equals null Get Maximum 1- Search for the maximum number in the inputValues list 2- Respond with "The maximum is x" where x is the maximum value in the list. If empty list or all elements are zeros, x in the message equals null No action or response required. Exit This is the only command that terminates the interactive communication. Task description: In this part, you will update both client and server projects created in taskl with an interactive communication scenario, where a user at the client side can enter a command through the terminal then waits for a response back from the server to be able to send another command. The server handles the received commands and return appropriate results. The following table holds the different supported commands that a user can initiate, along with the proper handle from the server side and the expected response per command. The server keeps a list (Dynamic-size ArrayList or Static-size Array) of integers (initially empty or filled with zeros) and named inputValues to handle (add/remove) commands. If you use ArrayList option you can use the different APIs to add/remove elements. If you use array option, so to add an element, you can replace the first zero with the new element. If you use array option, so to remove an element, replace it with zero. The client initially prints a list of the supported commands for the user to write correct formatted command. If a user sends any other command or a supported command but in a different format, the server should ignore the command and respond with unsupported command" without exiting either the client or the server. Client Supported Commands Server Reaction and response Add: x 1- Add x to the input Values list where x can be any integer value (e.g., Add: 74) 2- Respond with added successfully" Remove: x 1. Remove all occurrences x from the input Values list where x can be any integer value (e.g., Remove: 2) 2- Respond with "removed successfully" Get_Summation 1- Calculate the summation of values in the inputValues list 2- Respond with The summation is x" where x is the summation of all values in the list. If empty list or all elements are zeros, x in the message equals null Get_Minimum 1- Search for the minimum number in the inputValues list 2- Respond with "The minimum isx" where x is the minimum value in the list. If empty list or all elements are zeros, x in the message equals null Get Maximum 1- Search for the maximum number in the inputValues list 2- Respond with "The maximum is x" where x is the maximum value in the list. If empty list or all elements are zeros, x in the message equals null No action or response required. Exit This is the only command that terminates the interactive communication

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Algorithmic Trading Navigating The Digital Frontier

Authors: Alex Thompson

1st Edition

B0CHXR6CXX, 979-8223284987

More Books

Students also viewed these Databases questions