RMI使用小例


1、定义一个接口(继承Remote):

方法要抛RemoteException。


package rmi;


import java.rmi.RemoteException;


public interface IAdd extends java.rmi.Remote{

int add ( int a , int b ) throws RemoteException;  

}


2、定义一个类作为服务端 (继承UnicastRemoteObject  ,实现接口IAdd 、,Serializable):

构造和方法要抛RemoteException。


package rmi;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class AddServer extends java.rmi.server.UnicastRemoteObject implements IAdd , Serializable{

public AddServer() throws RemoteException {  
super();
}


public int add ( int a ,int b ) throws RemoteException {

return a+b ;
}

public static void main(String[] args) {


try {     
AddServer as = new AddServer();  
Registry registry = LocateRegistry.createRegistry(2500);   

//  取名 add
           registry.bind("add", as);  

              //  提示服务端开启
                 System.out.println("AddServer Start...");  


} catch (Exception e) {   
e.printStackTrace();   
}  
}
}


3、测试类(作为客户端)

package testdb;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import rmi.IAdd ;

public class Test {

  public static void main(String[] args) {

try {
//  最后拼接的名字来自AddServer 类中取的名字。
IAdd  add =  ( IAdd )Naming.lookup("rmi://127.0.0.1:2500/add");

//  测试加法运算
System.out.println( " a+b= " + add . add ( 2,3) );

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}   
     }
}


注: IAdd  add =  ( IAdd )Naming.lookup("rmi://127.0.0.1:2500/add");   此行中 add 是来自服务端  registry.bind("add", as);  中设置的名字:add 。

即:服务端  registry.bind(" remove ", as);   ,那么客户端就是  IAdd  add =  ( IAdd )Naming.lookup("rmi://127.0.0.1:2500 / remove ");   。





你可能感兴趣的:(RMIjava游戏开发)