import java.io.*; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; /*java -Djava.security.policy=firsttry.policy -Djava.rmi.server.codebase=http://? -Djava.rmi.server.hostname=? Server ip port*/ public class Server{ public static void main(String[] args)throws Exception{ if(args.length<3) {System.err.println("usage: java Server host port object"); System.exit(1); } Registry reg= LocateRegistry.createRegistry(Integer.parseInt(args[1])); if(System.getSecurityManager()==null) System.setSecurityManager(new RMISecurityManager()); IDistantObject d=new DistantObject(); Naming.rebind("rmi://"+args[0]+":"+args[1]+"/"+args[2],d); } }
import java.rmi.Remote; import java.rmi.RemoteException; import java.util.Vector; public interface IDistantObject extends Remote{ public void put(String line)throws RemoteException; public Vector<String> getContent()throws RemoteException; }
import java.rmi.Naming; /*java -Djava.security.policy=firsttry.policy Client ip port*/ public class Client{ public static void main(String[] args)throws Exception{ if(args.length<3) {System.err.println("usage: java Client host port object"); System.exit(1); } IDistantObject d=(IDistantObject)Naming.lookup("rmi://"+args[0]+":"+args[1]+"/"+args[2]); System.out.println("avant, taille = "+d.getContent().size()); d.put("vive java"); System.out.println("apres, taille = "+d.getContent().size()); } }
import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.Vector; /*UnicastRemoteObject evite d'avoir a faire exportObject dans le serveur*/ public class DistantObject extends UnicastRemoteObject implements IDistantObject{ private Vector<String> content; public static final long serialVersionUID=1; public DistantObject()throws RemoteException{ content=new Vector<String>(); } public synchronized void put(String line)throws RemoteException{ content.add(line); } public synchronized Vector<String> getContent()throws RemoteException{ return(content); } }
grant{ permission java.net.SocketPermission "*:1024-65535", "connect,accept"; permission java.net.SocketPermission "*:80", "connect"; };
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.