Rückwertige RMI Kommunikation

Status
Nicht offen für weitere Antworten.

Raidri

Mitglied
Hi Leute,

Ich habe folgendes Problem.

Ich habe eine Client / Server Architektur, wo sich mehere Clients auf einem Server anmelden können. Wird der Client gestartet, wird er selber ein temporärer Server, der so lange da sein soll bis der Client seine Applikation schließt, das wurde gemacht da der Server Meldungen zum Client schicken muss die nicht über einen return wert gehen, d.h. der Client muss für diesen zeitpunkt als Server fungieren. Mit dem anmelden auf dem Server schickt jeder Client seine IP via methodenaufruf mit in dem fall

xy.uebergebeClientIp(String ip);

in Dieser Methode wird dann direkt ein Naming.lookup auf den Client gemacht mit

Code:
public void uebergebeClientip(String ip)
{
     v = (IVerteilung) Naming.lookup("rmi://"+ip+":7777/verteilung");
}

Folgendes Problem.. ich war bis dato in dem aberglauben das RMI irgendwie so ne art "Threading" beinhaltet und es niemals probleme mit der methode oben geben kann. nur wenn sich mehr als 1 Person beim server anmeldet bekommt immer der letzt angemeldete User die Nachrichten die normalerweise garnicht für ihn bestimmt waren, sondern für einen User der sich viel früher angemeldet hat. D.h. er bildet sich immer nen neues Objekt "v" und überschreibt das alte. Wie bekomme ich es nun hin das er dies nicht tut, sodass jede Nachricht den User erreicht den es auch erreichen sollte.

Sry das der Code mit hand reingeschrieben wurde aber habe die Daten nicht auf dem System hier und musste es deswegen so schreiben. Hoffe man kann mir in dem Sinne vllt trotzdem weiterhelfen.

Danke

lg,
Raidri
 
T

tuxedo

Gast
Es ist doch quatsch am Client nochmal nen RMI Server zu starten.

Schonmal was von Callbacks gehört? Da gibst du dem Server in einem Methodenaufruf einfach ein Objekt mit, das du zuvor mit RMI exportiert hast (oder du lässt es von UnicastRemoteObject erben) und gut ist.

Ruft der Server nun Methoden an diesem Objekt auf, wird der Aufruf zum Client geführt.

Wenn das ganze über's Internet laufen soll und du nicht zwingend auf RMI festgelegt bist, schau dir doch mal SIMON an.

Andernfalls rate ich dir mal nach "RMI" und "Callback" zu googeln.

- Alex
 

Marco13

Top Contributor
tuxedo hat gesagt.:
Es ist doch quatsch am Client nochmal nen RMI Server zu starten.

Vorneweg: Ich habe (speziell im Vergleich zu demjenigen, der SIMON geschrieben hat) wirklich NULL Ahnung von diesen Client/Server-Netzwerk-Geschichten - aber ... so eine drastische Aussage irritiert mich, weil ich zumindest weiß, dass zwischen den beiden immer eine Firewall stehen kann, und man da manchmal .... rumdengeln :? muss.
 
G

Gast2

Gast
Moin,

Marco13 hat gesagt.:
Ich habe [...] wirklich NULL Ahnung von diesen Client/Server-Netzwerk-Geschichten

ist alles eine Ansichtssache

ein Server

zumindest ungefähr ... habe unter Java noch kein Netzwerk gemacht

Code:
Socket socket = new Socket(myIP, myPort)
Socket.Bind()
while(!ende) New ServerClient(socket.acceptClient());

mehr macht ein Server nicht (wie gesagt eine Ansichtssache!) ... und dann kannst Du unterscheiden zwischen Server-Client und Client-Client

Server-Client
Code:
public ServerClient implements Runnable
{
    public ServerClient(Socket socket)
    {
        // der ganze Kram auf Server-Seite
    }
}

Client-Client
Code:
public ClientClient implements Runnable
{
    public ClientClient(Socket socket)
    {
        // der ganze Kram auf Client-Seite
    }
}

gut - die sehen sich jetzt ähnlich ... ist aber so gewollt, denn so unterscheide ich im Netzwerk

hand, mogel
 
T

tuxedo

Gast
Meine "quatsch" aussage bezieht sich darauf, dass ein RMI Server auf Clientseite nicht notwendig ist nur um dem Server zu ermöglichen Methoden am Client aufzurufen. Das macht man mit Callbacks.

Aber okay, im Falle von "ich kann/darf nur RMI verwenden" und "der Client sitzt hinter einer Firewall/Router" ist es vermutklich wirklich einfacher auf dem Client nochmal einen RMI Server zu instanziieren, als sich mit den anonymen Serverports die RMI bei der vernwendung von Callbacks aufmacht umzugehen.

Gruß
Alex
 

Raidri

Mitglied
ja thx, das mit dem callback war ne lücke in meinem wissen. mit dem hat das alles super funktioniert ;). herzlichen dank. und es ist wirklich quatsch sowas zu machen nur wusste ich bis dato keinen besseren ausweg ;).

thx nochmal.
 
T

tuxedo

Gast
Wie gesagt. Wenn der Client hinter einer Firewall/einem Router sitzt, macht dein ursprüngliches Vorhaben durchaus Sinn. In allen anderen Fällen wohl eher nicht.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
G Socket Socket Kommunikation Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
T Client zu Client Kommunikation Netzwerkprogrammierung 2
K Socket Nur bestimmte Zeichen als Kommunikation zulassen Netzwerkprogrammierung 1
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
H Android - PC kommunikation Netzwerkprogrammierung 3
S Server Kommunikation Netzwerkprogrammierung 1
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
M Kommunikation übers Internet Netzwerkprogrammierung 9
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
I Interne Computer Kommunikation Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
R Server zu Client Kommunikation Netzwerkprogrammierung 11
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
Y HTTP Google Reader API Kommunikation Netzwerkprogrammierung 3
C Socket Kommunikation mit SMTP-Server Netzwerkprogrammierung 4
J Kommunikation von Webanwendungen (auf Tomcat Server) untereinander Netzwerkprogrammierung 8
H Kommunikation Netzwerkprogrammierung 8
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
E Zeitgleiche Kommunikation, mögliche Ansätze Netzwerkprogrammierung 17
1 Java to Android TCP Kommunikation Netzwerkprogrammierung 2
O php - applet Kommunikation Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
R Kommunikation TCP + UDP Netzwerkprogrammierung 3
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
1 Kommunikation mit externem Programm über TCP Netzwerkprogrammierung 2
D Server-Client (Web) Kommunikation Netzwerkprogrammierung 9
E Client-Server-Kommunikation Netzwerkprogrammierung 13
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
DamienX Socket Asnchrone Kommunikation Netzwerkprogrammierung 5
S TCP/IP-Kommunikation ist zu langsam Netzwerkprogrammierung 13
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
G java asynchrone kommunikation Netzwerkprogrammierung 8
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
G Objecte für Kommunikation nutzen Netzwerkprogrammierung 2
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
RaoulDuke RMI Kommunikation Java <-> Perl Netzwerkprogrammierung 7
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
S Kommunikation zweier Java-Programme Netzwerkprogrammierung 6
J client/server kommunikation Netzwerkprogrammierung 3
T Kommunikation auf Byte-Ebene zw. C und Java via Socket Netzwerkprogrammierung 12
M Client-Kommunikation ohne Server Netzwerkprogrammierung 7
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
J Kommunikation zw. Server und mehreren Clints haut nicht hin Netzwerkprogrammierung 2
K Socket Kommunikation Netzwerkprogrammierung 3
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
G JINI über RMI // Client-Server Kommunikation Netzwerkprogrammierung 4
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben