Hi, ich hab folgendes Problem.
Hab ne Klasse Server, die von Thread erbt, und im Konstruktor mit ner while(true) Schleife die ganze Zeit mitlaufen soll (um Daten von Sockets einzulesen).
Jetzt erstelle ich meine Klasse als Thread, und mein Programm bleibt stehen, als ob es nun in der while (true) Schleife drinhängt.
So erstell ich meinen Thread:
public static void createServer(){
try {
server = new Server();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server.start();
}
Und das tut mein Thread: (eigtl. unwichtig)
public Server() throws IOException {
while (true) {
server = new ServerSocket(6112);
server.setReuseAddress(true);
client = server.accept();
input = new DataInputStream(new BufferedInputStream(
client.getInputStream()));
output = new DataOutputStream(new BufferedOutputStream(
client.getOutputStream()));
// schicke Nachricht an alle verbundenen Clients zurück
output.writeUTF(input.readUTF());
output.flush();
server.close();
input.close();
output.close();
}
}
Mir ist nicht so ganz klar, wieso er da in die Endlosschleife reinspringt, Ich dachte genau das ist ja der Sinn von Threads, dass sie einfach im Hintergrund parallel mitlaufen.
Gruß
Der Sym
Hab ne Klasse Server, die von Thread erbt, und im Konstruktor mit ner while(true) Schleife die ganze Zeit mitlaufen soll (um Daten von Sockets einzulesen).
Jetzt erstelle ich meine Klasse als Thread, und mein Programm bleibt stehen, als ob es nun in der while (true) Schleife drinhängt.
So erstell ich meinen Thread:
public static void createServer(){
try {
server = new Server();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server.start();
}
Und das tut mein Thread: (eigtl. unwichtig)
public Server() throws IOException {
while (true) {
server = new ServerSocket(6112);
server.setReuseAddress(true);
client = server.accept();
input = new DataInputStream(new BufferedInputStream(
client.getInputStream()));
output = new DataOutputStream(new BufferedOutputStream(
client.getOutputStream()));
// schicke Nachricht an alle verbundenen Clients zurück
output.writeUTF(input.readUTF());
output.flush();
server.close();
input.close();
output.close();
}
}
Mir ist nicht so ganz klar, wieso er da in die Endlosschleife reinspringt, Ich dachte genau das ist ja der Sinn von Threads, dass sie einfach im Hintergrund parallel mitlaufen.
Gruß
Der Sym