KAEPS133
Freizeitschrauber(in)
Hallo, Ich bin momentan ein kleinen Chat Client und Server zu basteln. Der Client läuft wunderbar, der Server zickt mit dem GUI aber rum und ich weiß nicht warum.
In der ServerGUI habe ich eine einfache Methode die JTextArea aktuallisieren soll.
ServerGUI.java
Der im Server sieht es so aus:
Server.java
Kommentiere ich in der start Methode acceptClients(); aus, heißt die Methode wird nicht aufgerufen wird die GUI wunderbar aktualisiert und der text "server running on port: " +port ist dort zu lesen, wird acceptClients(); allerdings aufgerufen ist Funkstille. Ich habe zu Testzwecken die display() Methode umgestellt auf ein System.out.println(msg) umgestellt und das kommt an.
Irgendwas muss also mit der GUI spinnen. Ich dachte zuerst das es daran liegt das die GUI nicht mit einem eigenen Thread gestartet wurde, aber auch mit invokeLater gibt es keine Abhilfe.
Hat jemand eine Idee warum sich die GUI verweigert?
Vielen Dank!
In der ServerGUI habe ich eine einfache Methode die JTextArea aktuallisieren soll.
ServerGUI.java
Code:
public static void display(String msg) {
messages.append(msg);
}
Der im Server sieht es so aus:
Server.java
Code:
public static void start (int port){
try {
serverSocket = new ServerSocket(port);
ServerGUI.display("server running on port: " +port);
}
catch (IOException e) {}
acceptClients();
}
public static void acceptClients() {
while (true) {
try {
clientSocket = serverSocket.accept();
int i = 0;
for (i = 0; i < maxClientsCount; i++) {
if (threads[i] == null) {
(threads[i] = new clientThread(clientSocket, threads)).start();
break;
}
}
if (i == maxClientsCount) {
PrintStream os = new PrintStream(clientSocket.getOutputStream());
os.println("Server too busy. Try later.");
os.close();
clientSocket.close();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
Kommentiere ich in der start Methode acceptClients(); aus, heißt die Methode wird nicht aufgerufen wird die GUI wunderbar aktualisiert und der text "server running on port: " +port ist dort zu lesen, wird acceptClients(); allerdings aufgerufen ist Funkstille. Ich habe zu Testzwecken die display() Methode umgestellt auf ein System.out.println(msg) umgestellt und das kommt an.
Irgendwas muss also mit der GUI spinnen. Ich dachte zuerst das es daran liegt das die GUI nicht mit einem eigenen Thread gestartet wurde, aber auch mit invokeLater gibt es keine Abhilfe.
Hat jemand eine Idee warum sich die GUI verweigert?
Vielen Dank!