# Java Server via Swing offline setzen



## erZ (29. Jul 2007)

Tag auch


```
public void setOnline() {
        online = true;
        synchronized(this) {
            this.notifyAll();
        }
    }
    
    public void setOffline() {
        online = false;
        try {
            synchronized(this) {
                System.out.println("1");
                this.wait();
                System.out.println("1");
            }
        } catch(java.lang.InterruptedException e) {
            System.out.println("Fehler beim Offline gehen des Server.");
        }
    }

    public void run() { .... }
```

So nun habe ich folgendes Problem. Ich hab ein Swing GUI gebaut, da einen Button für Offline/Online gehen des Servers gebastelt. Mein Server geht schön Online. weil wenn der Server(Thread) instanziiert wurde, läuft er ja. Problem ist jetzt das wait();. Sobald das ausgeführt wird bleibt er ja dort hängen und wartet bis es weiter geht.

Ich hab eine Main.java Hauptfenster.java und Server.java
Main ist für das starten des Hauptfensters zuständig.
Hauptfenster ist das GUI, welches eine Objekt von Server hat.
Und Server ist da oben zu sehen (ein Teil davon).

So, ich dachte mir, dass ich es so aufteile und das GUI arbeiten lasse mit dem Thread. Ich weiss auch wo mein Problem liegt. Das drücken des Buttons muss eine vollständige Ausführung beinhalten. Das heißt, dass das wait von etwas anderen ausgeführt werden muss was wiederum ein Thread ist. Gibts da nicht noch ne bessere Lösung?

Gruß erZ


----------



## Angel4585 (29. Jul 2007)

ich mache gerade auch etwas in der Art:

ich setze ein Flag, welches in der run() Methode abgefragt wird.

Mein Problem:

mein Thread nimmt über die Methode accept() von ServerSocket, Verbindungen zu den Clients auf.

D.h. der Server "hängt" bei diesem accept und ich weis nicht wie ich dieses hängen dann abbreche.


----------



## HoaX (29. Jul 2007)

erZ: wozu brauchst du denn das wait an der stelle?

angel: setz das flag und mach selbst ne verbindung zu dem server auf ...


----------



## Angel4585 (29. Jul 2007)

wenn ich selbst eine Verbindung herstelle weis ich aber nicht, ob das die Serveranwendung ist und ich den Thread der daraufhin erzeugt würde nicht erzeugen soll, oder ob das die Clientanwendung ist bei der alles normal erzeugt werden soll.
Man kann schliesslich auf dem Serverrechner(gerade zu Testzwecken) auch die Clientanwendung starten.


----------



## HoaX (29. Jul 2007)

dann lass den client doch "darfst jetzt aufhören" senden


----------

