0% found this document useful (0 votes)
2 views

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 integ

The document outlines a client-server application in Java that supports commands for adding, removing, and retrieving statistics (summation, minimum, maximum) from a list of integers. The server listens on port 6666 and processes client requests, responding with appropriate messages based on the command executed. The client interacts with the server by sending commands and receiving responses until the 'exit' command is issued.

Uploaded by

Adel Hassan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

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 integ

The document outlines a client-server application in Java that supports commands for adding, removing, and retrieving statistics (summation, minimum, maximum) from a list of integers. The server listens on port 6666 and processes client requests, responding with appropriate messages based on the command executed. The client interacts with the server by sending commands and receiving responses until the 'exit' command is issued.

Uploaded by

Adel Hassan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

Computer Science questions and answers

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 equals null

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

You might also like