Java Sockets: an einen bestimmten Client senden?

Hallo liebe community,
ich versuche schon seit Stunden ein Java-Programm zu schreiben, welches es ermöglicht mit mehreren Clientprogrammen auf ein zentrales Serverprogramm (ebenfalls Java) zuzugreifen. Dies klappt auch soweit bis ich versuche mir mehreren Clients gleichzeitig auf einen Server zuzugreifen. Ist dies möglich oder muss man für jeden Client einen eigenen Thread starten? Falls es möglich ist, wäre es möglich dann einem bestimmten Clienten zu antworten?
Viele Grüße unnd schonmal vielen Dank für die Bemühungen
m_amann

Hallo m_amann,

du hast die Lösung ja quasi schon selbst herausgefunden. Nur deine letzte Frage verstehe ich nicht so ganz. Ansonsten sind die Java Tutorials immer einen Blick wert: http://docs.oracle.com/javase/tutorial/networking/so… :wink:

Grüße!
Java-Helfer

Hallo Java-Helfer
vielen Dank für die schnelle Antwort.
Die zweite Frage hat sich mit der Verwendung von mehreren Threads erledigt. Die Seite mit dem Knock Knock Protocol hilft mir echt weiter, super Arbeit :wink:
Stellt sich nurnoch die Frage wie man die Einzelnen Threads syncronisiert und Daten zwischen ihnen austauscht, aber des ist ne andere Frage… :wink:
lg m_amann

Hallo,

Dies klappt auch soweit bis ich versuche mir mehreren Clients
gleichzeitig auf einen Server zuzugreifen. Ist dies möglich
oder muss man für jeden Client einen eigenen Thread starten?

Soweit ich weiß, werden die Requests einfach sequentiell abgearbeitet.
Aber ohne das jetzt selbst ausprobiert zu haben, der Abschnitt „Konkurrierender Server“ dürfte dich interessieren, falls es doch nicht geht:

http://dpunkt.de/java/Programmieren_mit_Java/Netzwer…

Falls es möglich ist, wäre es möglich dann einem bestimmten
Clienten zu antworten?

Naja es ist ja so gedacht dass der Client dem Server eine Anfrage sendet, und der Server die Antwort zurück. Du könntest theoretisch den Socket für die gesamte Verbindung offen lassen (dann wäre aber pro Client ein Port dauernd besetzt) oder du könntest dir die IP des Clients merken, was jedoch schwierig sein kann, da der Client ja auch via PAT hinter einem Router sitzen kann, und du dann keine Verbindung von außen aufbauen kannst.

Da kommt es wohl darauf an was deine Applikation genau machen soll, wieviele Clients du behandeln musst, etc.

lg