RMI, IP eines Clients herausfinden



  • Hi,

    Ich hab folgendes Problem:
    Ich habe eine verteilte Anwendung die über RMI läuft. Jetzt kann es aber passieren dass der Client beim connecten seine IP mit 127.0.0.1 übergibt was meinen Server zum Absturz bringt, wenn ich dem Client etwas senden will, bzw beim Client etwas aufrufen will

    Kann ich auf Serverseite irgendwie herausfinden welche IP mir übergeben wurde?

    mfg Taelan



  • 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.


Anmelden zum Antworten