# Chat ohne ständig laufenden Chatserver



## Gast (18. Nov 2005)

Hallo,

alle Java-Applet-Chat-Lösungen, die ich bisher gesehen habe, verwenden einen ständig laufenden Chatserver im Hintergrund. Auch, wenn gerade kein Client angemeldet ist.

Daher meine Idee:

Wäre es vielleicht möglich, den Chatserver von der Appletklasse selber zu steuern?

Man legt in der Appletklasse einen static Chatserver Server an.
Außerdem zählt man in einem static int clients, wieviele Clientinstanzen es gerade gibt.

Prinzipiell läuft dann kein Server.
Wenn ein Applet erzeugt wird, überprüft es in der init(), ob es die einzige Instanz im Moment ist.
Wenn ja, dann erzeugt es eine Instanz der Chatserverklasse, startet die und setzt die static Chatserver Server-Variable.
Wenn ein Applet erzeugt wird, das nicht die erste Instanz ist, dann verwendet es den bereits gesetzen Chatserver.

In der destroy()-Methode werden die Clientinstanzen heruntergezählt.
Stellt ein Client fest, dass er der letzte war, dann beendet er den Chatserver.


Ist das möglich, oder wo ist der Fehler?
Ist das mit den Sicherheitseinschränkungen von Applets zulässig?


----------



## Ilja (18. Nov 2005)

der fehler liegt darin, dass dein Applet sich zum server erklärt (oder instanz startet) und garnicht weiß, obs andere instanzen gibt, die bereits das gleich gemacht haben 

ohne server geht NIX!


----------



## Bert Brenner (18. Nov 2005)

Applets laufen doch auf den Clients, das heisst jeder Client würde seinen eigenen Server starten.


----------



## Gast (18. Nov 2005)

ok.
heißt das, wenn ich in einer Applet-Klasse eine static-Variable habe, dass dann jede erzeugte Instanz seine eigene static-Variable hat, sie also nicht auf eine gemeinsame zugreifen können?


----------



## Bert Brenner (18. Nov 2005)

static Variablen sind innerhalb "einer" JVM für alle Instanzen gleich.


----------



## Ilja (18. Nov 2005)

nein... ein applet läuft auf verschiedenen maschinen.... die teilen sich garnix  ...
wenn ein applet selbst 2 Objekte erzeugt, dann teilen sich die beiden die statics, doch auch auf jeder maschine für sich


----------

