Ich habe eine einfache Client/Server-Anwendung. Ich versuche auf die Arraylist von UI zuzugreifen, bekomme aber eine leere Arraylist zurück. Ich habe jede mögliche Lösung im Internet versucht, aber keine hat in meinem Fall funktioniert.ArrayList ist leer, wenn von einem separaten Thread aus zugegriffen wird, obwohl es ausgefüllt ist.
Server.java
import java.net.*;
import java.util.ArrayList;
import java.io.*;
public class Server {
public static ArrayList<MyThread> clients = new ArrayList<MyThread>();
public static void main(String args[]) throws IOException {
ServerSocket s = new ServerSocket(7777);
try {
while (true) {
Socket s1 = s.accept();
MyThread t = new MyThread(s1);
clients.add(t); // adds threads to an ArrayList
System.out.println(clients); // prints the ArrayList(It works and print all threads)
t.start(); //start the thread
}
} catch (SocketException e) {
System.out.println("Error: " + e);
}
}
}
Dies ist ein MouseClickeed Methode in meiner UI-Klasse ist, wo ich die Arraylist in Serverklasse
public void mouseClicked(MouseEvent arg0) {
try {
String s = textField.getText();
Client.ClientName = s; \\ gets the string entered and set it as Client Name
System.out.println(Server.clients); \\It's supposed to print Client ArrayList but instead it prints an empty List ([])
}
catch (NullPointerException e1) {
System.out.println("Error: " + e1);
}
}
});
Haben Sie Ihren Client schon mit dem Server verbunden? – haifzhan
Ja, bereits verbunden und zur Liste hinzugefügt. Das ist sicher. –
Bitte formatieren Sie Ihren Code - es ist viel schwieriger zu lesen, wenn es nicht eingerückt ist. (Und das ist eindeutig nicht Ihr richtiger Code, da die Schrägstriche rückwärts sind ...) –