Question: Client Supported Commands Server Reaction and response Add: x where x can be any integer value (e.g., Add: 74) 1- Add x to the inputValues
| Client Supported Commands | Server Reaction and response |
| Add: x where x can be any integer value (e.g., Add: 74) | 1- Add x to the inputValues list 2- Respond with added successfully |
| Remove: x where x can be any integer value (e.g., Remove: 2) | 1- Remove all occurrences x from the inputValues list 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 is x 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 |
| Exit. This is the only command that terminates the interactive communication. | No action or response required |
JAVA PROGRAM.
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()); }
} } /*********************************/
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
Get step-by-step solutions from verified subject matter experts
