RMI非常慢,客户端和服务器不在同一台机器上

时间:2014-09-17 14:36:12

标签: performance reference rmi

我有一个奇怪的问题。我使用Java RMI开发了客户端 - 服务器应用程序,并且在localhost工作非常好,如果我将客户端和服务器放在两个不同的MacBook Pro上也能很好地工作,但是如果我尝试放置客户端和服务器,则工作非常慢在两台不是macbook pro的电脑上。只有当我尝试通过调用远程方法将客户端的引用发送到服务器时,我才会遇到此问题。

这是我的代码

SERVER:

    public class Server{

      public static void main(String [] args){
          try
          {
              Server_Impl server=new Server_Impl();

              Registry reg=LocateRegistry.createRegistry(1099);
              reg.bind("Server",server);

              if(new Scanner(System.in).nextInt()==-1){
                  System.exit(0);
              }
          }
          catch (RemoteException e){e.printStackTrace( );}
          catch (AlreadyBoundException e) {e.printStackTrace( );}
      }

  }

客户端

public class Client{
    public static Interfaccia_Server Server;

public static void main(String [] args){
    try{
        Registry reg=LocateRegistry.getRegistry("10.0.1.5",1099);

        Server = (Interfaccia_Server) reg.lookup("Server");

Client_Impl c= new Client_Impl(Server);
    Server.connect_client(c);
c.check_action();
    }
    catch(Exception e){

    }

}
}

所有代码都可以工作,但如果客户端和服务器不在同一台计算机上,或者在Apple mac计算机上,则非常慢。

如果我从客户端删除这行代码,所有工作都很好,但我需要服务器中客户端的引用

Server.connect_client(c);

我不知道,请帮帮我

0 个答案:

没有答案