2/7/2021
Name: Muhammad Sajid
RollNo: 2K18/Swe/71
Department: BS Software Engineering
Subject: Distributed Computing (Lab)
ASSIGNMENT BY: SIR KAMRAN DAHRI
Faculty of Engineering and Technology
University of Sindh Jamshoro
LAB
Calculator Interface Program:
import java.rmi.*;
import java.rmi.server.*;
interface Calculator extends Remote{
double add(double no1, double no2) throws RemoteException;
double sub(double no1, double no2) throws RemoteException;
double mul(double no1, double no2) throws RemoteException;
double div(double no1, double no2) throws RemoteException;
Calculator Implementation:
import java.rmi.*;
import java.rmi.server.*;
public class CalculatorImpl implements Calculator{
public double add(double no1,double no2) throws RemoteException{
return no1+no2;
public double sub(double no1,double no2) throws RemoteException{
return no1-no2;
}
Faculty of Engineering and Technology
University of Sindh Jamshoro
public double mul(double no1,double no2) throws RemoteException{
return no1*no2;
public double div(double no1,double no2) throws RemoteException{
return no1/no2;
}
}
RMIServer Program:
import java.rmi.*;
import java.rmi.server.*;
class RMICalculatorServer{
public static void main(String[] args) throws
RemoteException,java.net.MalformedURLException{
CalculatorImpl calculator = new CalculatorImpl();
UnicastRemoteObject.exportObject(calculator);
Naming.rebind("Calculator",calculator);
System.out.println("RMI Server Started.");
RMIClient Program:
import java.rmi.*;
public class RMICalculatorClient{
Faculty of Engineering and Technology
University of Sindh Jamshoro
static java.util.Scanner input=null;
static int value1,value2;
public static int menu(){
System.out.println("press 1 for Addition");
System.out.println("press 2 for Subtraction");
System.out.println("press 3 for Multiplication");
System.out.println("press 4 for Divistion");
System.out.println("press 5 for Exit");
System.out.println("Enter Choice?");
return input.nextInt();
}
public static void userInput(){
System.out.print("Enter value 1:");
value1 = input.nextInt();
System.out.print("Enter value 2:");
value2 = input.nextInt();
}
public static void main(String[] args)throws
RemoteException,NotBoundException,java.net.MalformedURLException{
input = new java.util.Scanner(System.in);
int choice=0;
Calculator calculator=null;
while(true){
System.out.println("\nWelcome to Calculator\n");
try{
choice =RMICalculatorClient.menu();
calculator = (Calculator)Naming.lookup("Calculator");
}catch(NumberFormatException e){
e.printStackTrace();
}
if(choice==1){
userInput();
double add = calculator.add(value1,value2);
System.out.println("Addition: "+add);
}
else
if(choice==2){
userInput();
Faculty of Engineering and Technology
University of Sindh Jamshoro
double sub = calculator.sub(value1,value2);
System.out.println("Subtraction: "+sub );
}
else
if(choice==3){
userInput();
double mul = calculator.mul(value1,value2);
System.out.println("Multiplication: "+mul );
}
else
if(choice==4){
userInput();
double div = calculator.sub(value1,value2);
System.out.println("Division: "+div);
}
else
if(choice==5)
System.exit(0);
else
System.out.println("Invalid Choice");
}
}
Faculty of Engineering and Technology
University of Sindh Jamshoro
Program Snapshots: