클라이언트가 검색할 사원의 이름을 서버에 전달하면 서버는 텍스트파일에서 사원의 정보를 검색하여 해당라인을 클라이언트에게 리턴해 준다.
인터페이스
import java.rmi.*;
public interface EmpServer extends Remote {
public String getEmp(String empName) throws RemoteException;
}
서버 클래스
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;
import java.io.*;
public class EmpServerImpl extends UnicastRemoteObject implements EmpServer {
public EmpServerImpl() throws RemoteException {
super();
}
public String getEmp(String empName) {
BufferedReader br = null;
try{
br = new BufferedReader(new FileReader("emp.dat"));
String line = null;
while((line=br.readLine())!=null) {
if(line.indexOf(empName)!= -1) {
br.close();
return line;
}
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
public static void main(String args[]) {
try {
EmpServerImpl obj = new EmpServerImpl();
Naming.rebind("EmpServer", obj);
System.out.println("EmpServer bound in registry");
} catch (Exception e) {
System.out.println("EmpImpl err: " + e.getMessage());
e.printStackTrace();
}
}
}
클라이언트
import java.rmi.*;
import java.io.*;
public class EmpClient {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("검색하실 사원의 이름을 입력해 주세요 ");
String empName = br.readLine();
EmpServer obj = (EmpServer)Naming.lookup("rmi://localhost/EmpServer");
String str = obj.getEmp(empName);
System.out.println("서버에서 온 메시지");
System.out.println(str);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
emp.dat
최재철|강원도 횡성군|865-987-3456|choijc@yahoo.com
김인철|충청남도 대천시|4321-543-567|kimcj@empal.com