RMI Server - Client - Aufteilung/Prinzip

bageleudi

Mitglied
Guten Tag,

ich habe jetzt schon eine Weile hier im Forum mitgelesen und dadurch einige Probleme lösen können, aber jetzt hätte ich doch ganz gerne mal eure spezielle Hilfe.

Für ein Uni-Projekt (Programmierung eines Brettspiels - das wird wohl eher niemand kennen - Funkenschlag) sollen wir auch die Netzwerkkommunikation programmieren und das macht uns gerade einige Kopfschmerzen.

Das Spiel läuft soweit auf einem Rechner, also Spiellogik usw. ist vorhanden, GUI funktioniert ebenfalls und die Ansicht zeigt halt immer den aktuellen Spieler an.

Als nächstes soll das ganze jetzt so aufgebaut werden, dass ein Rechner einen Server startet, und andere Spieler sich über das Netzwerk als Client anmelden sollen/können.

Leider waren die Vorlesungen diesbezüglich nicht sehr hilfreich und ich konnte im Internet nicht wirklich hilfreiches dazu finden.

Dies sind jetzt ein paar grundlegende Dinge, die ich gerne wissen würde:

Kommt der Code für den Server und den Clienten in ein Projekt? Oder sollte man es besser in zwei verschiedenen von einander unabhängigen Projekten machen? (Wir arbeiten mit Eclipse)

Mir fällt leider nichts schlaues dazu ein. Und falls man es doch in einem Projekt unterbringt, wie sähe dann die Strukturierung aus?

Eine Idee wäre folgende:
Java:
src
   ->blabla
            ->Client
                  ->Klassen (Gui)
            ->Common
                  ->Klassen (ValueObjects usw.)
            ->Server
                  ->Klassen (Logik, Methoden usw)

Ich persönliche würde es ja am liebsten in zwei verschiedenen Projekten machen, nur bin ich mir nicht sicher, ob man das normalerweise so macht, und wenn ja, habe ich das Problem, dass wir nur ein Repository zur Verfügung haben - dann könnten wir ja nicht beide Projekte synchronisieren.

Ich hoffe ihr habt ein paar Ideen und Tipps für mich.

Viele Grüße

bageleudi
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Hallo,
ich würde es sogar in drei Eclipse Projekten machen.
Core: Basisklassen, Entities etc
Server: Serverklassen, referenziert Core
Client: Clientklassen, referenziert Core

Im Repository gäbe es entsprechende Unterordner, die Du in Eclipse in die Repository Location einträgst.
 

bageleudi

Mitglied
Ok, vielen Dank schonmal für die beiden Antworten! :applaus:

Entities habe ich in diesem Zusammenhang leider noch nicht gehört, aber das werden dann wohl so Klassen wie Spieler, Städte, Rohstoffe usw sein oder?

Und was genau ist mit "referenziert Core" gemeint?
 

c_sidi90

Top Contributor
Ich hatte so etwas ähnliches früher auch schon programmiert, damals auf UDP basierend. Wenn ich mich richtig erinnere, hatte ich für jeden Client eine separate Serverklasse implementiert (Thread gesteuert), die Hauptklasse bestand aus Gui und Client-Seite. Beim Start des Programms wird geprüft, ob ein Socket bereits auf dem festgelegten Port lauscht, wenn ja wird der Thread der Serverklasse nicht gestartet, und nur der Client nimmt Verbindung zu dem Port auf. Andersrumm genauso. Hoffe du verstehst was ich meine.

So ist quasi jeder Client gleichzeitig auch Server.

Lg
 

ARadauer

Top Contributor
Hallo,
ich würde es sogar in drei Eclipse Projekten machen.
Core: Basisklassen, Entities etc
Server: Serverklassen, referenziert Core
Client: Clientklassen, referenziert Core
Ich würde es so machen:
API: Backend Interfaces, DTOs
Server: Backend Logik, Entities etc, referenziert API (implementiert)
Client: Clientklassen, referenziert API (benutzt)

Bei einem Spiel nicht so genau. Aber schreibe ich eine Business Anwendung mit Hibernate oder JPA möchte ich nicht, dass meine JPA Entities an den zb Swing Client übertragen bzw dem bekannt sind
 

Ollek

Bekanntes Mitglied
Schön dieser thread.

Vor der Problematik, die du hast stehe ich ebenfalls. :bae:

Ich schreibe allerdings eine Verwaltung von Artikeln. Diese soll auf einem Terminalserver laufen. Hier benötige ich auch einen Server und einen Client. Der Austausch dieser Daten erfolg bei mir mit XML(anderes Thema :rtfm:). Aber ich machs in 2 Projekten Server(Datenhaltungsschicht) und Client(GUI). Der Server horcht auf einem Port auf eingehende Clients und jeder Client erhält einen neuen Thread.

Weiter bin ich hier noch nicht, da ich mich aktuell mit dem Datenaustausch beschäftige.
 

bageleudi

Mitglied
Ich habe mal 2 Screenshots gemacht - einmal eine Idee von mir, alles in einem Projekt zu machen, und einmal die oben genannte Idee es in 3 Projekten zu machen.

Meine Version: http://bageleudi.bplaced.net/bilder/Bildschirmfoto%202011-07-27%20um%2014.24.20.png
Und die Idee mit den 3 projekten: http://bageleudi.bplaced.net/bilder/Bildschirmfoto%202011-07-27%20um%2014.30.45.png

Ist das so etwa in Ordnung? Nur weiß ich jetzt immer noch nicht, was mit referenziert Core gemeint ist :oops:

Ich würde es so machen:
API: Backend Interfaces, DTOs
Server: Backend Logik, Entities etc, referenziert API (implementiert)
Client: Clientklassen, referenziert API (benutzt)
Das wäre dann ja so ähnlich wie in meinem 2. Screenshot oder? Wobei ich die Logik im Moment dann im Core hätte.

Ich weiß im Moment noch nicht, was ihr mit referenziert meint. Könnte mir das vieleicht noch jemand erklären? (und was wäre dann der Unterschied implementiert/benutzt?)
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
Ich weiß im Moment noch nicht, was ihr mit referenziert meint. Könnte mir das vieleicht noch jemand erklären? (und was wäre dann der Unterschied implementiert/benutzt?)
Kennen/benutzen du willst ja normalerweise nicht deine Backend Services mit dem Client ausliefern. Wenn dein Client aber auch als Server arbeiten könenn soll, ist das natürlich was anderes
 

c_sidi90

Top Contributor
Für das Vorhaben, habe ich dir ja einen Vorschlag gepostet, wie ich es gelöst hatte.

Klasse Client für die Socketverbindung und Versenden von Informationen.
Klasse GUI für die Komponentenverwaltung und Listener
Klasse Server implements Runnable für das Empfangen und agieren der Informationen und die Erzeugung eines ServerSockets auf einen bestimmten Port.

Client startet, prüft ob auf Port XY ein Socket horcht, wenn ja, starte Serverklassenthread nicht, client-klasse nimmt Verbindung auf. Andernfalls, starte Serverklasse, warte auf Verbindungen.
 

Massenhaft

Mitglied
Hi,
bei meinem letzten Spiel-Projekt habe ich alles in einem Projekt, da der Client immer mit dem Server arbeitet. Das heißt, auch ein Single-Player-Game ist eigentlich ein Client/Server Spiel (localehost).
Dadurch kannst du sehr einfach auf gemeinsame Dienste und Beans zugreifen. Für kleine Spiele sicherlich ausreichend.
Mein Spiel und den Quellcode findest du hier:
slick-netty-network-game-example - An UDP 2d netwok game example - Google Project Hosting
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
P Server als Client nutzen Netzwerkprogrammierung 8
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
K C# Server - Android Client Netzwerkprogrammierung 0
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
E Thematik Client server Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
N Client am Server abmelden Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
J Client Server - Serialisierung Netzwerkprogrammierung 8
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
K Client => Server Netzwerkprogrammierung 2
A ? Home-Network, Server/Client-Einrichtung Netzwerkprogrammierung 4
S Socket Server: ConnectionError vom Client erkennen Netzwerkprogrammierung 31
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
N Client-Server-Datenbank Netzwerkprogrammierung 13
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
B Client/Server Connection Problem Netzwerkprogrammierung 2
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
R Server zu Client Kommunikation Netzwerkprogrammierung 11
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
T Server und Client verbinden nicht Netzwerkprogrammierung 6
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
das-mo Client/Server sendet nicht Netzwerkprogrammierung 7
Z Socket Server/Client vernünftiger Verbindungsabbruch Netzwerkprogrammierung 4
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
F TCP Server/Client Netzwerkprogrammierung 14
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
N eine klasse mit server & client Netzwerkprogrammierung 5
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
T Socket Client versucht zyklische Verbindung zum Server Netzwerkprogrammierung 4
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
D Projektstruktur / Architektur (Client-Server) Netzwerkprogrammierung 9
P Socket IRC Client nicht kompatibel mit Server Netzwerkprogrammierung 30
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
N Server Client TCP IP Netzwerkprogrammierung 3
M Übersicht client/server implementationen und Frameworks (mithilfe gesucht!) Netzwerkprogrammierung 6
J ObjectStream Client/Server Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben