# while(true) umgehen



## RawBit (12. Mai 2007)

hallo nochmal,
ich beschäftige mich ja jetzt erstmal mit Netzwerkprogrammierung und arbeit an einem LAN Chat und hab mir dafür ein bisschen von dem Beispiel von meez abgeschaut um zu kapieren wies abläuft. der lan chat läuft soweit nur es ist folgendes: es geht um diese zeilen:


```
private void startServerListener() {
      ServerSocket ss ;
      try {
         ss = new ServerSocket(port);
         System.out.println("Server gestartet...");
         while (true)         
            new ServerBody(ss.accept(), this).start();   
      } catch (Exception e) {
         e.printStackTrace();
      }
   
   }
```

ich programmier das ja mit GUI und ich hab es so gemacht das man mit der GUI einen server starten / sich als client auf nem server einloggen kann, alles in einem. das geht ja wie gesagt nur ist es so dass sich nur ein nutzer einloggen kann wenn ich das *while(true)* weglasse. wenn der sich ausloggt gehts nimmer. nun ja while(true) ist allerdings sehr schädlich für die GUI und es lässt sich natürlich nichts mehr bedinen wenn man einen server erstellt. starte ich noch eine applikation meines chats zum einloggen als client (alles am localhost) dann läufts perfekt, nur für den admin sieht das ganze schlecht aus weil ja die GUI komplett hängt. wie kann ich das while(true) also umgehen? damit die gui weiterläuft. 

mfg


----------



## Wildcard (12. Mai 2007)

Du musst Threads verwenden.


----------



## RawBit (12. Mai 2007)

ja das tu ich.. also ServerBody is eine von thread abgeleitete klasse wie in meez' beispiel. trotzdem gehts nich, ich hab jetzt schon drann gedacht die endlosschleufe auf den inhalt von run() zu geben, geht auch nich

ich werds mal testen den inhalt der serverListener methode in nen thread zu schreiben


----------



## doctus (12. Mai 2007)

ich glaube, was wildcard meint, ist, dass die gui und die Methode startServerListener() auch in zwei unterschiedlichen Threads laufen müssen:

class Main
-neuer Thread GUI
-neuer Thread Server
--------------------
class GUI implements Runable
-GUI erstellen
---------------------
class Server
-starteServerlistener
-jeweils ein neuer Thread pro Client
------------------------

Lg doctus


----------



## RawBit (12. Mai 2007)

ja also ich hab das jetzt mal in nem thread laufen lassen

und es geht auch jetzt besser aber irgendwas geht immer noch nich, muss erst schauen, aber danke @ wildcard


----------

