# Komisches Fenster bei Serversocket



## dusti (2. Mrz 2008)

Ich habe gerade einen Server mit GUI programmiert. Der Code für den Server ist:

```
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.lang.Thread;
import java.net.ServerSocket;
import java.net.Socket;


public class RenderServer implements Runnable {

	private ApartRender_Server frame = new ApartRender_Server();
	private ServerSocket server;

	
	RenderServer() {
		super();
		try {
			server = new ServerSocket(23456);
			frame.addComment("Server Gestartet...");
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	public void set(ApartRender_Server frame) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void run() {
		if(server == null) {
			return;
		}
		while(server != null) {
			try {
				Socket client = server.accept();
				
				BufferedWriter out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
				out.write("Hallo\n");
				out.flush();
				out.close();
				client.close();
				
			}catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}
}
```

In der main-Methode der GUI starte ich diesen Thread nun mit:


```
ApartRender_Server inst = new ApartRender_Server();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
				RenderServer Rserver = new RenderServer();
				Rserver.set(inst);
				Rserver.run();
```
ApartRender_Server ist die GUI, RenderServer der Server.
Sobald ich das Programm starte, erscheint ein Fenster, das aber nur den Rand besitzt, es ist ausser dem Rand nichts zu sehen an den Buttons etc die ich hinzugefügt habe, dafür sehe ich immer was hinter dem Fenster ist. Dieses Fenster kann ich nicht schliessen, es reagiert scheinbar nicht, zeigt aber immer, auch wenn man es bewegt, den genauen Hintergrund an. Starte ich das Programm nochmal, erscheint die GUI ganz normal, ich kann auf die Buttons drücken etc.
Weiss jemand, woran das liegen könnte?


----------



## Murray (2. Mrz 2008)

Mach statt

```
Rserver.run();
```
lieber

```
new Thread( Rserver).start();
```

Dann läuft der Accept-Thread wirklich als solcher und blockiert nicht den Haupt-Thread der Anwendung.


----------



## dusti (2. Mrz 2008)

Perfekt, danke viemals, das war der Fehler!


----------

