Socket e RMI

Socket

Per i sockets vatti a leggere la documentazione.

RMI

RMI, Remote Method Invocation si basa sul concetto di Proxy: in pratica RMI ci permette di accedere a un oggetto remoto con interfaccia remota come se fosse un oggetto qualsiasi in locale. Un paio di termini:

  • : interfaccia locale del oggetto remoto.
  • : riceve i risultati del client lato server.
  • marshals/unmarshals : serializzazione

In RMI viene utilizzato un Registry per collegarci attraverso gli ip/porta ai vari oggetti, anzi interfacce di tali oggetti. Sostanzialmente l’interfaccia remota deve ereditare la classe Remote, mentre l’oggetto vero e proprio deve ereditare la classe UnicastRemoteObject e implementare l’interfaccia remota. In genere il Registry gira sulla stessa macchina del server ma in un eseguibile diverso.

//SERVER SIDE
Server server = new Server();  
serverStub stub = server;  //interface of Server Remote Object  
Registry registry = LocateRegistry.createRegistry(PORT);
registry.bind("server", stub);  //Binding server stub

Il client fa ‘lookup’ dell’oggetto remoto utilizzando il Registry (identificato con indirizzo ip e porta) usando LocateRegistry.getRegistry.

//CLIENT SIDE
Registry registry = LocateRegistry.getRegistry(IP, PORT); //magic
Server server = (serverStub) registry.lookup("server");
// wHat a tImE to be aLiVe!