L
Hallo,
das ist jetzt nicht die direkte Antwort auf Deine Frage, aber vielleicht hilft es Dir bei der Lösung Deines Problems, da es die übliche Vorgehensweise ist.
Der Client:
interface ClientListener extends Remote
{
public void doSomethingOnClient(DoOnClientEvent e) throws RemoteException;
}
Der Server:
interface MyServer implements Remote
{
public void addClientListener(ClientListener l) throws RemoteException;
public void removeClientListener(ClientListener l) throws RemoteException;
public void doSomethinOnServer(DoOnServerEvent e) throws RemoteException;
}
Die EventObjects:
class DoOnClientEvent extends java.util.EventObject
{
//TODO
}
Beispielimplementierung des Clients:
class MyClient implements ClientListener
{
public MyClient() {
//Erstellen etc und registrieren.
server.addClientListener(this); //hiermit anmelden. Der Client ist nun über die Methode doSomethingOnClient vom Server ansprechbar
}
public void doSomethinOnServer(DoOnServerEvent e) throws RemoteException
{
//TODO, die Aktion. Aber Synchronisation nicht vergessen!
}
}
Wie Du siehst braucht die IP nicht mitgeteilt zu werden. Der Server benutzt einfach die "callback"-Methode des Clients, nachdem dieser sich angemeldet hat (hier über addClientListener(this)).
Siehe, dass dieses Observer-Pattern die gängige vorgehensweise unter Java ist. Die Syntaktische Benennung und Vorgehensweise ist ähnlich wie bei swing/awt.
Gruß
PS: Unter Vorbehalt von Fehlern, da aus dem Kopf geschrieben.