# Server/Client Struktur



## Neolity (18. Jun 2008)

Hallo,

meine Architektur sieht folgendermaßen aus:

- Klassen Server, Verbindung und Client

- Server wartet auf Verbindungen. Wird mit accept eine Verbindung angenommen, so wird eine neues Objekt Verbindung v angelegt, der Thread gestartet und das Verbindungsobjekt in eine Liste gepackt. Diese Schritte laufen in einer Endlosschleife ab.

- Verbindung erweitert Thread und implementiert die run Methode. In dieser run Methode wird auf ankommende Nachrichten gewartet und es können Nachrichten gesendet werden.

- Client erweitert ebenfalls Thread und implementiert auch die run Methode. In dieser Run Methode können Nachrichten empfangen und gesendet werden.


Was ich haben möchte:
Ich möchte einen Server haben, an den sich mehrere Clients anmelden können (funktioniert). Den Clients soll es möglich sein Nachrichten an den Server zu schicken (funktioniert). Der Server soll Nachrichten an die einzelnen Clients schicken können (Antworten auf eine Nachricht eines Clients funktioniert, ABER ich möchte auch vom Server aus an alle Clients, die gerade mit dem Server verbunden sind, eine Nachricht schicken können. Das funktioniert noch nicht). Im Endeffekt soll da ein kleines Spielchen bei rauskommen. Der Server verwaltet praktisch den Zustand des Spiels, wird von einem Spieler (Client) durch eine Nachricht informiert, wenn er eine Aktion durchführt, soll dem Spieler eine Bestätigung schicken, dass seine Nachricht angekommen ist und schlussendlich alle Spieler informieren, dass sich etwas am Spiel geändert hat.

Mein Problem liegt in erster Linie in den Threads. Ich bin mir nicht sicher welche Threads ich brauche damit die Kommunikation reibungslos abläuft.
Leider beschäftigen sich die meisten Beispiele, die ich zu Server/Client gefunden habe, nur mit weniger umfangreichen Beispielen.

Vielleicht hat hier ja jemand einen Tipp zu einer guten Quelle oder ein kleines Beispiel wie man so eine Kommunikation am besten aufzieht.


----------



## tuxedo (19. Jun 2008)

Im Netz gibts doch nahezu hunderte "Chatserver" Beispiele. Und da gehts genau da drum, alle Clients vom Server aus auf einmal zu erreichen. 

Ich vermute du bist schon so weit dass sich mehrere Clients verbinden können und pro Client ein Thread auf dem Server existiert?

Wenn ja, dann musst du dir nur da, wo du die Verbindungen annimmst merken, welcher Client in welchem Thread steckt. Dann kannst du später über diese Liste iterieren und damit jeden Client erreichen. 

- Alex


----------



## Neolity (19. Jun 2008)

Vielen Dank!

Das läuft mittlerweile alles soweit!


----------

