import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Calculator extends Remote {
double add(double a, double b) throws RemoteException;
double subtract(double a, double b) throws RemoteException;
double multiply(double a, double b) throws RemoteException;
double divide(double a, double b) throws RemoteException;
}
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class CalculatorClient {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
Calculator stub = (Calculator) registry.lookup("CalculatorService");
System.out.println("Addition: " + stub.add(5, 3));
System.out.println("Subtraction: " + stub.subtract(5, 3));
System.out.println("Multiplication: " + stub.multiply(5, 3));
System.out.println("Division: " + stub.divide(5, 3));
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
protected CalculatorImpl() throws RemoteException {
super();
}
@Override
public double add(double a, double b) throws RemoteException {
return a + b;
}
@Override
public double subtract(double a, double b) throws RemoteException {
return a - b;
}
@Override
public double multiply(double a, double b) throws RemoteException {
return a * b;
}
@Override
public double divide(double a, double b) throws RemoteException {
if (b == 0)
throw new ArithmeticException("Division by zero is not allowed.");
return a / b;
}
}
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class CalculatorServer {
public static void main(String[] args) {
try {
CalculatorImpl calc = new CalculatorImpl();
Registry registry = LocateRegistry.createRegistry(1099); // Default RMI port
registry.rebind("CalculatorService", calc);
System.out.println("Calculator Service is running...");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}