Client/Server

Status
Nicht offen für weitere Antworten.
R

Ramulen

Gast
Hiho Javavolk !

Bin gerade dabei ein "Magic"-ähnliches Kartenspiel fürs INet zu proggen (is ne Applikation kein applet).
Ich stehe nun vor folgendem Problem: Meine Applikation soll die Möglichkeit bieten zu entscheiden, ob man nun den server oder den clienten stellt. Ich bin in Sachen Java im Netz noch nicht topfit (hab immer mit php gearbeitet bei so sachen). Wäre super wenn ihr mir ein wenig helfen koenntet. Ein paar einfache Codefragmente sollten reichen um mich weiterzubringen.

Gruß Ramulen
 
G

Grizzly

Top Contributor
Ich verstehe die Frage nicht ganz :bahnhof: . Du möchtest, dass Dein Programm sowohl als Client oder auch als Server gestartet werden kann?

Wenn das die Frage ist, wäre meine Antwort:
In vielen 3D Shootern ist das so gelöst: Man kann einen Client starten und sich auf einem Server einklinken. Oder man startet einen Client, und macht dort ein Spiel auf sprich agiert gleichzeitig auch als Server (nennt man auch "listening server"). Die letzte Möglichkeit ist einen Server direkt und ohne Client zu starten (nennt man auch "dedicated server").

Einige treiben dass sogar noch weiter und lassen auch im Single Player einen Server im Hintergrund laufen, so dass der Client wirklich nur als Frontend agiert und als Backend immer ein Server läuft.
 
R

Ramulen

Gast
Sollte ein "listening Server" werden. Wir kann ich das jedoch realisieren ?
 
G

Gast

Gast
Bin auf der Suche nach einem einfachem "Beispiel-Code". Hab noch nie was mit server und clients geproggt. Stehe daher etwas auf dem Schlach. Meine Bücher helfen mir nicht grad weiter.
 
G

Grizzly

Top Contributor
Das ist immer noch etwas allgemein. Aber ich versuche mal darauf zu Antworten ;) :

Erst einmal nimmt man im Client die Einstellungen für den Server vor (Level, Anzahl der maximalen Mitspieler, Schwierigkeitsgrad der K.I., usw.). Dann startet den Client den Server und baut eine Verbindung zu ihm auf. Wenn der Server ein Listening Server ist, ginge das bspw. direkt über einen PipedOutputStream und einen PipedInputStream. Der Client kommuniziert dann halt entsprechend mit dem Server sprich schickt die Aktionen des Spieler hin, bekommt die entsprechenden Daten zum aktuellen Spiel zurück und stellt diese dar.
Andere Clients müssen die Verbindung über einen Socket aufbauen. Cool wäre natürlich da, wenn alle verfügbaren Server / Spiele angezeigt werden würden. Dies kannst Du Dir aber für später aufheben. Im einfachsten Fall gibt der Benutzer einfach den Namen oder die IP Adresse an, und der Client versucht dahin eine Verbindung aufzubauen.

Der Server nimmt - sobald er gestartet wird - über einen ServerSocket eingehende Verbindungen entgegen (außer vielleicht bei dem Client, von dem er als Listing Server gestartet wurde => Piped, s.o.). Diese steckt er dann entweder einfach in einen Vector und arbeitet die dann in regelmäßigen Abständen ab. Oder jede Verbindung bekommt ihren eigenen Thread.
Das erste ist sicher in einfachere Variante und dürfte auch etwas Ressourcen schonender sein. Die zweite garantiert, dass die Anfragen des Clients direkt und relativ zeitnah bearbeitet werden. Dazu musst Du allerdings alle Objekte bzw. Klasse, mit denen diese Threads kommunizieren Thread-sicher machen. Außerdem dürfte bspw. der Speicherverbrauch um einiges höher sein.
Parallel zu dieser Verbindungs-Geschichte bearbeitet der Server die Spiele Logik und prüft die Daten der Clients (Nach dem Prinzip: "Never trust a client.").

Ein Tutorial zu Netzwerk-Kommunikation mit Java findest Du auf der Sun-Seite.

Eine weitere Möglichkeit wäre, dass ganze per RMI zu machen. Dabei ruft der Client eine Methode direkt auf dem Server auf. Funktioniert allerdings nur mit Java.
Ein Tutorial zu RMI findest Du auch auf der Sun-Seite.



Ansonsten stell' einfach etwas konkretere Fragen :) . Dann gibt's auch konkretere Antworten ;) .
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G [Game-Multiplayer] Welt vom Server zum Client senden. Spiele- und Multimedia-Programmierung 0
H Client-Server-Kommunikation Spiele- und Multimedia-Programmierung 9
c_sidi90 Server/Client Struktur Multiplayer Spiele- und Multimedia-Programmierung 9
M Browsergame Client Server Spiele- und Multimedia-Programmierung 4
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
T Selbst-handelnde Objekte im Client-Server Betrieb Spiele- und Multimedia-Programmierung 9
T Kartenspiel mit Server Client Funktionen Spiele- und Multimedia-Programmierung 3
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
M Multiplayer Game mit Frontend auf HTML5 - ohne ständigen Client Request - Möglich?! Spiele- und Multimedia-Programmierung 12
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
A Wie JAVA Webcam Client programmieren? Spiele- und Multimedia-Programmierung 11
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
ZoXlike Audio Server selbst erstellen Spiele- und Multimedia-Programmierung 11
M Minecraft Bukkit Server VM Kann nicht Vergrößert werden Spiele- und Multimedia-Programmierung 20
Kr0e Red Dwarf Game Server Spiele- und Multimedia-Programmierung 5
T Radio/TV-Server Spiele- und Multimedia-Programmierung 3
Dit_ Server Monitor [Quake III] Spiele- und Multimedia-Programmierung 20
A Visuell darstellen ob Server verfügbar Spiele- und Multimedia-Programmierung 2
G Server und java Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben