Question: Computer networks Use the Java IDE you find appropriate(e.g., Eclipse, NetBeans), create two java terminal projects one to run client.java and one to run server.java.Carefully

Computer networks

Use the Java IDE you find appropriate(e.g., Eclipse, NetBeans), create two java terminal projects one to run client.java and one to run server.java.Carefully read the code of the two projects along with the comments placed per command. Run the server project first, then run client project. These projects simply create a chat between the client and server. Through the terminal window of the client you can start writing some statements, and on clicking enter you should find these statements on the terminal of the

server side along with responses back from the server displayed at the client side. This chat will keep on until the client sends exist as a command and clicks enter, this will terminate the connection established as well as the read and write streams on the two sides.

Task description:In this part, you will update both client and server projects created in task1 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-sizeArrayList orStatic-size Array) of integers (initially empty or filled with zeros) and named inputValuesto 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 printsa list of the supported commands forthe user to write correct formatted command. If auser sends any other command or a supported command but in a different format, the server should ignore the commandand respond with unsupported command without exiting either the client or the server.Client

Server.java

import java.io.*; import java.net.*; 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()); } } }

Client.java

import java.io.*; import java.net.*; import java.util.Scanner; 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()); } } }

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 Databases Questions!