Ich habe schonwieder ein kleines Problem, wo ich jetzt nen paar Stunden dran festhänge.
Es geht um den Methoden-Aufruf vom Clienten zum Server übers Internet.
Der lookup() funktioniert einwandfrei => Er findet den RMI-Server, jedoch wenn ich eine Methode aufrufen will, gibt es einen timeout:
10.0.0.2 ist die lokale addresse vom server (wobei ich zum connecten natürlich nicht die lokale angebe^^).
Hier einmal die codeausschnitte vom clienten und server.
Server:
und der Client:
Hat jemand eventuell ne Ahnung was ich falsch mache?
Freue mich über eure Hilfe
Mfg Timo
Es geht um den Methoden-Aufruf vom Clienten zum Server übers Internet.
Der lookup() funktioniert einwandfrei => Er findet den RMI-Server, jedoch wenn ich eine Methode aufrufen will, gibt es einen timeout:
Code:
java.rmi.ConnectException: Connection refused to host: 10.0.0.2; nested exception is:
java.net.ConnectException: Connection timed out: connect
10.0.0.2 ist die lokale addresse vom server (wobei ich zum connecten natürlich nicht die lokale angebe^^).
Hier einmal die codeausschnitte vom clienten und server.
Server:
Java:
...
try {
chat = new ChatHandler(); //Die Server Klasse
Registry reg = LocateRegistry.createRegistry(ClientServer.PORT);
reg.rebind(ClientServer.BIND_NAME, chat);
} catch (Exception e){
System.out.println("Fehler: "+e);
}
...
public class ChatHandler extends UnicastRemoteObject implements ClientServer{
private Map<String,Callback> clients;
public ChatHandler() throws RemoteException {
super();
clients = Collections.synchronizedMap(new HashMap<String,Callback>());
}
public void clientConnect(String clientName, Callback listener) throws RemoteException {
if(clients.containsKey(clientName)){
throw new RemoteException(clientName+" ist bereits verbunden!");
}else{
clients.put(clientName, listener);
updateClientUserList(clientName,clientName,ClientServer.UPDATE_LIST_ADD,false);
System.out.println("ECP: "+clientName+" hat sich verbunden!");
}
}
...
und der Client:
Java:
...
try {
callback = new CallbackImpl(ChatMainGUI.this);
server = lookupServer();
server.clientConnect(options.getOptionen().getUserName(), callback);
userList = server.getClientList();
} catch (RemoteException ex) {
printDebug("server.connect: " + ex);
}
...
private ClientServer lookupServer(){
try {
Registry reg = LocateRegistry.getRegistry(options.getOptionen().getServerIP(), options.getOptionen().getPort());
return (ClientServer) reg.lookup(ClientServer.BIND_NAME);
} catch (Exception e) {
onError("Server ist nicht erreichbar!");
printDebug("lookupServer: "+e);
}
return null;
}
Hat jemand eventuell ne Ahnung was ich falsch mache?
Freue mich über eure Hilfe
Mfg Timo