# Client-Server Programmierung



## Unregistriert (3. Nov 2009)

Hi

ich möchte ein Client-Server programmieren, dabei soll die Verbindung über das Protokoll TCP realisiert werden und auf einem festvorgegebenem Port. Außerdem sollen maximal 8 Client sich an den Server anmelden können und damit Anfragen gleichzeitig abgewickelt werden können, sollte der Server ein Multithread Server sein.
Habt ihr irgendwelche Vorschläge oder Ideen wie ich diesen realisiere. Bei der Übertragung handelt es bei mir um
Objekte und ich würde gern BufferedReader zum Übertragen benutzen.


----------



## SlaterB (3. Nov 2009)

Google
->
Writing the Server Side of a Socket (The Java™ Tutorials > Custom Networking > All About Sockets)

Details wie 'maximal 8 Clients' kann man auf später verschieben, 
erstmal Grundlagen


----------



## Kaffeebohn (4. Nov 2009)

Im Grunde ist es ganz einfach. Du erstellst ein ServerSocket, dem übergibst du den Port auf dem er horchen soll als Parameter. Also z.B. 

```
ServerSocket ssock = new ServerSocket(1337);
```
Dann erstellst du eine Schleife die sich wiederholt solange dein Server laufen und auf neue Clients warten soll. In die Schleife packst du

Socket s = DeinServerSocket.accept();

Nun startest du noch einen neuen Thread und übergibst diesem das neue Socket das du gerade bekommen hast (s). Dann geht das Spiel von vorne los. Im Thread kannst du dann die Verbindung verwalten also drauf rumschreiben oder lesen oder was auch immer.

Die Stichworte zum googeln sind also Socket und ServerSocket. Über das Socket bekommst du dann auch über s.getInputStream() und ns.getOutputStream() die Streams zum lesen und schreiben.

Ich hoffe das hat erst mal geholfen, für alles weitere ließ dich am besten erst mal ein bisschen ein!

//EDIT: Zu der Maximalen Anzahl Benutzer:

Um das zu realisieren kannst du entweder einen simplen Counter nehmen (Problem ist nur, wenn eine Verbindung beendet wird, diesen auch wieder runterzuzählen). oder du speicherst alle Objecte, denen du dein Socket übergeben hast, in einer Liste oder Array oder ähnliches. Das hat den Vorteil, dass du im Nachhinein auf alle Objekte zugreifen kannst.


----------

