Develop an RMI based application, which reads a file with list of marks of
student from a client, send it to server and find how many students having
distinction, first class, second class and fail and display the result on
client side.
Code for RMI based application, which reads a file with list of marks of student from a client, send it to server and find how many students having distinct in Java
// ResultRmi Interfacepublicinterface ResultRMI extends java.rmi.Remote
{
String calcresult(double marks[],int count) throws java.rmi.RemoteException;
}
// ResultRMIImpl.java, ResultRMI implementation
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
publicclass ResultRMIImpl extends UnicastRemoteObject implements ResultRMI
{
public ResultRMIImpl(String name) throws RemoteException
{
super();
try
{
Naming.rebind(name, this);
}
catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
}
}
public String calcresult(double marks[],int count) throws RemoteException
{
double total=0.0,average;
for(int i=0;i<count;i++)
{
total=total+marks[i];
}
average = total/count;
if(average >= 70)
{
return"Distinction";
}
elseif(average >=60 && average < 70)
{
return"Firstclass";
}
elseif(average >=50 && average < 60)
{
return"secondclass";
}
elseif(average >=40 && average <50)
{
return"passcalss";
}
else
{
return"fail";
}
}
}
// ResultRMIServer.java
import java.rmi.*;
import java.rmi.server.*;
publicclass ResultRMIServer
{
publicstaticvoid main(String args[])
{
// Create and install the security manager
System.setSecurityManager(new RMISecurityManager());
try
{
// Create ResultRMIImpl
ResultRMIImpl myResult = new ResultRMIImpl("//Binita/myResultRMI");
System.out.println("ResultRMI Server ready.");
}
catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
}
}
}
// ResultRMIClient.java RMI Result client
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.io.*;
import java.lang.*;
publicclass ResultRMIClient
{ publicstaticvoid main(String args[]) throws Exception
{
// Create and install the security manager
System.setSecurityManager(new RMISecurityManager());
FileReader fr = new FileReader("studentdetails.txt");
StreamTokenizer tok = new StreamTokenizer(fr);
String name="",classval,s;
double marks[] = newdouble[10];
int i=0;
tok.eolIsSignificant(true);
try
{
ResultRMI myResult = (ResultRMI)Naming.lookup("//"
+ args[0] + "/" + "myResultRMI");
while( tok.nextToken() != tok.TT_EOF)
{
if(tok.ttype == tok.TT_WORD)
{
name = tok.sval;
System.out.println("\nname is:"+name);
System.out.println("Obtained marks are:");
}
if(tok.ttype == tok.TT_NUMBER)
{
marks[i] = tok.nval;
System.out.println("Marks of subject "+i +" is "+marks[i]);
i++;
}
if(tok.ttype == tok.TT_EOL && tok.ttype != tok.TT_EOF)
{
classval = myResult.calcresult(marks,i);
System.out.println(name +" has " + classval);
i=0;
}
}
fr.close();
}
catch(Exception e)
{
System.err.println("System Exception" + e);
}
System.exit(0);
}
}
// OUTPUT
----- studentdetails.txt ------
binita 45 56 74 68
rasesh 88 85 96 92
krupa 41 42 51 52
nauka 62 53 62 48
rinkal 35 38 41 40
--------------------
name is:binita
Obtained marks are:
Marks of subject 0 is 45.0
Marks of subject 1 is 56.0
Marks of subject 2 is 74.0
Marks of subject 3 is 68.0
binita has Firstclass
name is:rasesh
Obtained marks are:
Marks of subject 0 is 88.0
Marks of subject 1 is 85.0
Marks of subject 2 is 96.0
Marks of subject 3 is 92.0
rasesh has Distinction
name is:krupa
Obtained marks are:
Marks of subject 0 is 41.0
Marks of subject 1 is 42.0
Marks of subject 2 is 51.0
Marks of subject 3 is 52.0
krupa has passcalss
name is:nauka
Obtained marks are:
Marks of subject 0 is 62.0
Marks of subject 1 is 53.0
Marks of subject 2 is 62.0
Marks of subject 3 is 48.0
nauka has secondclass
name is:rinkal
Obtained marks are:
Marks of subject 0 is 35.0
Marks of subject 1 is 38.0
Marks of subject 2 is 41.0
Marks of subject 3 is 40.0
rinkal has fail