第一个Android程序RMI

特别注意:要运行这个Android的RMI程序,要把类放在跟目录下

  1. 接口
  1. import java.rmi.Remote;
  2. import java.rmi.RemoteException;
  3. /**
  4. * 注意:这个接口继承自Remote,每一个定义的方法都必须抛出一个RemoteException异常对象
  5. */
  6. public interface Calculator extends Remote {
  7. public long add(long a, long b) throws RemoteException;
  8. public long sub(long a, long b) throws RemoteException;
  9. public long mul(long a, long b) throws RemoteException;
  10. public long div(long a, long b) throws RemoteException;
  11. }
  1. [root@localhost]#javac Calculator.java
  1. 接口的具体实现
  1. import java.rmi.RemoteException;
  2. import java.rmi.server.UnicastRemoteObject;
  3. /**
  4. * 注意:这个类使用了UnicastRemoteObject 去连接RMI系统
  5. */
  6. public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
  7. public CalculatorImpl() throws RemoteException { super(); }
  8. public long add(long a, long b) throws RemoteException { return a + b; }
  9. public long sub(long a, long b) throws RemoteException { return a - b; }
  10. public long mul(long a, long b) throws RemoteException { return a * b; }
  11. public long div(long a, long b) throws RemoteException { return a / b; }
  12. }
  1. [root@localhost]# javac CalculatorImpl
  1. 桩(Stubs)和框架(Skeletons)
  1. [root@localhost]# rmic CalculatorImpl
  1. 主机服务器
  1. import java.rmi.Naming;
  2. import java.rmi.RemoteException;
  3. public class CalculatorServer {
  4. public CalculatorServer(){
  5. try {
  6. Calculator c = new CalculatorImpl();
  7. Naming.rebind("rmi://192.168.0.183:1099/CalculatorService", c);//1099是默认的端口号CalculatorService是随便取得
  8. } catch (Exception ex) {
  9. System.out.println("Trouble:"+ex);
  10. }
  11. }
  12. public static void main(String[]args){
  13. new CalculatorServer();
  14. }
  15. }
  1. [root@localhost]# javac CalculatorServer
  1. 客户端
  1. import java.net.MalformedURLException;
  2. import java.rmi.Naming;
  3. import java.rmi.NotBoundException;
  4. import java.rmi.RemoteException;
  5. public class CalculatorClient {
  6. public static void main(String[] args) {
  7. try {
  8. Calculator c = (Calculator)Naming.lookup("rmi://192.168.0.183/CalculatorService");//CalculatorService要跟服务端的一样
  9. System.out.println(c.sub(4, 3));
  10. System.out.println(c.add(4, 5));
  11. System.out.println(c.mul(3, 6));
  12. System.out.println(c.div(9, 3));
  13. } catch (NotBoundException ex) {
  14. System.out.println();
  15. System.out.println("NotBoundException");
  16. System.out.println(ex);
  17. } catch (MalformedURLException ex) {
  18. System.out.println();
  19. System.out.println("MalformedURLException");
  20. System.out.println(ex);
  21. } catch (RemoteException ex) {
  22. System.out.println();
  23. System.out.println("RemoteException");
  24. System.out.println(ex);
  25. }
  26. }
  27. }
  1. [root@localhost]#javac CalculatorClient
  1. 运行RMI系统 我们是在命令控制台下运行这个系统的,你必须启动三个控制台窗口,一个运行服务器,一个运行客户端,还有一个运行RMIRegistry;
    有一个运行 RMIRegistry.(首先运行注册程序RMIRegistry。你必须在那个运行的目录下注册程序)

a.rmiregistry
b.java CalculatorServer
c.java CalculatorClient


» 本文链接:https://blog.apires.cn/archives/221.html
» 转载请注明来源:Java地带  » 《第一个Android程序RMI》

» 本文章为Java地带整理创作,欢迎转载!转载请注明本文地址,谢谢!
» 部分内容收集整理自网络,如有侵权请联系我删除!

» 订阅本站:https://blog.apires.cn/feed/

标签: Java, Android, RMI程序

添加新评论