# InputStreams gezielt ansteuern?



## Goldfish (10. Jul 2011)

Hi, da meine Erfahrung mit dieser Art der Programmierung noch etwas hinterher hinkt, fehlen mir häufiger die richtigen Ideen, daher meine Frage:
Im Anhang hab ich eine kleine Grafik gemalt, die das ganze etwas besser darstellen soll, wie ich mir das vorstelle. Also ich habe einen Client, der 2 Threads öffnet, die jeweils auf unterschiedlichen Input vom Server warten, um diesen an den Client weiter zu geben. Nun bin ich mir aber nicht sicher, wie ich sicherstellen kann, dass die Objekte vom Server auch genau beim richtigen Thread ankommen...

Ich sag schonmal Danke im Voraus ^^


----------



## Kr0e (10. Jul 2011)

Warum 2 Threads ? 

Einer reicht ansich vollkommen. Ein Thread der ständig liest, bzw. von der JVM schlafen gelegt wird, sofern nichts zum lesen da ist ;-). In dem Fall einfach einen kleinen Benachrichtungsmechanismus überlegen, der ankommende Daten handelt.

Ich vermute, du hattest die Idee mit 2 Threads, weil du 2 verschiede NAchrichtenarten hast, aber sowas regelt man nicht mit 2 Threads. Wenn du andere Dinge vor hast, ignoriere das hier.+-


----------



## Goldfish (10. Jul 2011)

Die genaue Idee liegt eher darin, dass ich den Threads selber im Grunde genommen keine Instanzen des Clients übergeben mag, weil das in meinem Fall schief läuft. Also der Hintergrund ist folgender:
Ich habe ein größeres GUI Programm, mit einer ganzen Menge unterschiedlicher Frames. Und der Input, der durch den Server reinkommt, soll die Daten in den Listen gewisser Framekomponenten verändern. Also Sprich ich hab jetzt eine Art Userraum, für ein online-Spiel, rechts habe ich eine Liste, in der angezeigt wird, welche User gerade online sind. Nun öffne ich beispielsweise ein Spiel mit einem anderen User, in dem ebenfalls immer angezeigt werden soll, welche User gerade mit in diesem Spielraum sind. Das Problem hier ist natürlich, dass diese Threads ja also die Objekte kennen müssten, die sie verändern. Da diese Frames jedoch erst irgendwann zur Laufzeit des Threads aufgerufen werden, ist mir leider noch keine andere Idee gekommen, als es auf mehrere Threads aufzuteilen. Im Prinzip bräuchte ich also auch mehr als 2^^°


----------



## Kr0e (10. Jul 2011)

Ich arbeite seit langer Zeit an einem MultiplayerServer. Ich mache es so:

Ich habe einen zentralen Server, bei dem sich User einloggen können. Der Server schickt an alle bereits angemeldeten Client dann STatusnachrichten: NewUser - LostUser - UserMessage - usw.


Jeder Client verbindet sich also mit dem Server und wartet dann auf Informationen des Servers und des Zustands. Hier ist wichtig in deinem Fall, dass bei dir anscheinend ein Socket = Spielinstanz ist, oder ? Dein Socket-Thread muss in diesem Fall dein Frame kennen, wo er dann ggf. Einträge verändert... Also ein Frame(Spielinstanz) sollte in diesem Fall einen Socket und einen LeseThread haben. Auf diese Weise kannst du das ganze eigentlcih ganz schön regeln.

Ansonsten vlt mal ein paar Online tutorials wäzlen... Oder dieses Forum hier...

Hab vlt was gefunden, was dir helfen könnte:

http://www.java-forum.org/netzwerkprogrammierung/92184-java-chat-selbst-gemacht.html

Gruß,

Chris


----------



## Goldfish (10. Jul 2011)

Ist alles sehr gut beschrieben da und lässt sich gut lesen ^^ allerdings weiß ich so ziemlich das meiste davon. Ich hab ja früher schon einfachere Client Server Anwendungen programmiert, nur noch nicht in einem solchen Umfang, dass ich auf das Problem kam, dass mein Thread auf die Frames selbst zugreigen müssen. Allerdings muss ich sagen, dass du mich gerade auf die geeignete Idee gebracht hast, wie ich das wohl mit einem Thread tatsächlich hinkriegen kann. ^^
Unterbrich mich ruhig, wenn meine Idee nicht funktionieren sollte ^^°

Also hab ich mir gerade gedacht, dass ich jetzt an den einen Thread, der gerade läuft eine ArrayList von Objects mitgebe, in die ich, wenn sich ein bestimmtes Frame öffnet, die Instanz des geöffneten Frames lade. Und abhängig davon, welche Request ich vom Server erhalte, müsste ich ja wissen, in welches Objekt ich die einzelnen Instanzen aus dieser Liste casten muss, um dann vom Thread aus auf die einzelnen Komponenten zugreifen zu können.

Also so lange er kein Problem durch das umhercasten von Object in die gewünschte Instanz bekommt und er das richtige Fenster dann nicht mehr erkennt, denke ich müsste das hinhauen.

Danke ^.^
Ich würd ja sagen "hast einen gut bei mir!" aber ich wüsste nichts, womit ich dir helfen könnt ^^°


----------



## Kr0e (10. Jul 2011)

Kein Ding, immer gern


----------

