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

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 equal's null.    

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


 

Answer

//Server java file

 

import java.io.*;

import java.net.*;

import java.util.ArrayList ;

import java.util.Collections;

class Server {

 

public static void main(String args[]) {

 

 ArrayList<Integer> list = new ArrayList<Integer>();

 

 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());

 

 // PrintWriter out = new PrintWriter(connectedClient.getOutputStream(), true);

 

      OutputStream ostream = connectedClient.getOutputStream();

 

  PrintWriter out = new PrintWriter(ostream, true);

 

  // Let's keep reading data from the client, as long as the client does't send "exit".

  String inputData;

  int y = 0;

 

  while (!(inputData = br.readLine()).equals("exit")) {

 

   out.flush();

   //System.out.println("received a message from client: " + inputData);   //print the incoming data from the client

 

if( inputData.toLowerCase().contains("add") ){

 

  int x = Integer.parseInt(stripNonDigits(inputData) );

  list.add(x);

 

  out.println("added successfully");

out.flush();

 

 

 }

 

 else if (inputData.toLowerCase().contains("remove")){

 

        list.remove(  Integer.valueOf(stripNonDigits(inputData) ) );

  out.println("remove successfully");

 

out.flush();

}

else if (inputData.toLowerCase().equals("get_summation")){

        if(sum(list) != 0)

  out.println("The summation is " + sum(list));

  else

  out.println("The summation is null"  );

 

out.flush();

}

else if (inputData.toLowerCase().equals("get_minimum")){

        if(sum(list) != 0){

  out.println("The minimum is " + minimum(list));

  }else{

  out.println("The minimum is null"  );

  out.flush();

   }

 

 

}

else if (inputData.toLowerCase().equals("get_maximum")){

        if(sum(list) != 0){

  out.println("The maximum is " + maximum(list));

  out.flush();

   }

  else{

  out.println("The maximum is null"  );

  out.flush();

   }

 

 

}else if(!inputData.toLowerCase().equals("exit")){

  out.println("Unsupported command"  );

 

     out.flush();

}

 

out.flush();

 //  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();

 out.close();

ostream.close();

  br.close();

  mySocket.close();

  connectedClient.close();

 

 } catch (Exception exc) {

  System.out.println("Error :" + exc.toString());

 }

 

}// end main

 

 

// return sum

public static int sum (ArrayList<Integer> m  ){

 

if ( m == null)

    return 0 ;

 

int sum = 0;

for(int i = 0; i < m.size(); i++)

   sum += m.get(i);

return sum;

 

}

 

// return minimum

public static int minimum  (ArrayList<Integer> m  ){

 

 

return Collections.min(m);

 

}

 

// return maximum

 

public static int maximum  (ArrayList<Integer> m  ){

 

 

return Collections.max(m);

 

}

 

public static String stripNonDigits(

            final CharSequence input /* inspired by seh's comment */){

    final StringBuilder sb = new StringBuilder(

            input.length() /* also inspired by seh's comment */);

    for(int i = 0; i < input.length(); i++){

        final char c = input.charAt(i);

        if(c > 47 && c < 58){

            sb.append(c);

        }

    }

    return sb.toString();

}

 

}

 

 

 

/////====================================

//Client java file

 

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()));

 

 

// DataInputStream inputStream=new DataInputStream(  new BufferedInputStream(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+"\n");  // send such input data to the server

    //writer.write(statement+"\n");

   // writer.flush();

 

if(!statement.equals("exit")){

   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());

 

 }

}

}

 

 

 📩 Need a similar solution? Email me: adel455@hotmail.com




Previous Post Next Post

Comments

Nepali Graphics - Learn design, Animation, and Progrmming