F
fdd
Gast
Hallo,
ich habe ein Problem mit Swing wenn ich einen ServerSocket aufmache, da Swing immer einfriert.
Der ServerSocket (in der Klasse Server, von Thread abgeleitet):
Wenn ich nun aus der GUI beispielsweise über einen Button den Server starte, friert die GUI ein.
Bereits probiert habe ich, den Thread über
zu starten. Aber auch das führt zum Freeze. Ich denke es liegt daran, dass die While-Schleife im Thread ja unendlich läuft und neue Verbindungen wartet, also dieser Thread nie fertig wird.
Gibt es denn keine Möglichkeit etwas vollkommen im Hintergrund laufen zu lassen, ohne das Swing das in seinen EventDispatcher aufnimmt?
Weiss jemand wie ich das lösen könnte? Oder weiss jemand eine andere Möglichkeit wie ich auf eingehende Verbindungen warten kann ohne Schleife?
Viele Grüße und Dank im Voraus,
Max
ich habe ein Problem mit Swing wenn ich einen ServerSocket aufmache, da Swing immer einfriert.
Der ServerSocket (in der Klasse Server, von Thread abgeleitet):
Code:
public void run() {
try{
server = new ServerSocket(5555);
System.out.println("Server gestartet");
while (true) {
Socket client = server.accept();
new ClientThread(client).start();
}
}catch(IOException e){}
}
Wenn ich nun aus der GUI beispielsweise über einen Button den Server starte, friert die GUI ein.
Bereits probiert habe ich, den Thread über
Code:
private void startButtonActionPerformed(ActionEvent evt) {
Thread tg = new Server();
SwingUtilities.invokeLater(tg);
}
zu starten. Aber auch das führt zum Freeze. Ich denke es liegt daran, dass die While-Schleife im Thread ja unendlich läuft und neue Verbindungen wartet, also dieser Thread nie fertig wird.
Gibt es denn keine Möglichkeit etwas vollkommen im Hintergrund laufen zu lassen, ohne das Swing das in seinen EventDispatcher aufnimmt?
Weiss jemand wie ich das lösen könnte? Oder weiss jemand eine andere Möglichkeit wie ich auf eingehende Verbindungen warten kann ohne Schleife?
Viele Grüße und Dank im Voraus,
Max