Ho creato un tipo di client Server, Client con RMI. Ma ogni volta che eseguo il mio server dopo aver avviato rmiregistry dal prompt dei comandi, viene lanciato l'errore già in uso. È solo io che ho iniziato il rmiregistry. L'ho controllato da netstat.Porta di chiamata del metodo remoto in uso
CodiceServer:
public class Server implements Runnable, Linker{
private static Server server = null;
private static Linker l = null;
private String name = null;
public Server(){}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void run(){
while(!("Andy").equalsIgnoreCase(name)){
}
}
public static void createStub(){
try{
server = new Server();
l = (Linker) UnicastRemoteObject.exportObject(server, 1099);
Registry registry = LocateRegistry.getRegistry();
registry.bind("Link", l);
System.out.println("Ready");
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
createStub();
Thread t = new Thread(server);
}
}
Codice Cliente:
public class Client implements Runnable{
private Scanner sc = new Scanner(System.in);
private Linker linker = null;
public void loadStub(){
try{
Registry registry = LocateRegistry.getRegistry(1099);
linker = (Linker) registry.lookup("Link");
}catch(Exception e){
}
}
public void run(){
String ip = null;
while(sc.hasNext()&&!(ip = sc.nextLine()).equalsIgnoreCase(":q")){
try {
linker.setName(ip);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String...args){
Client client = new Client();
client.loadStub();
Thread t = new Thread(client);
t.start();
}
}
Eccezione:
java.rmi.server.ExportException: Port already in use: 1099; nested exception is:
java.net.BindException: Address already in use: JVM_Bind
che era il problema nel mio caso. L'ho capito e quando stavo per postare qui, ho trovato la tua risposta. netstat -aon mostra dove sta ascoltando. In questo caso il suo ascolto su tutte le interfacce. – Andrews