Hej!
Jag håller på med en liten chatklient med tillhörande server.
jag har fått till skickandet och mottagande av meddelanden(meddelandet skickas ut till samtliga inloggade än så länge).
Men när jag försöker få till en lista över vilka som är inloggade så börjar det strula.
Som jag har det nu så skapas en klienthanterare för varje gång en person loggar in:
public void run() {
try {
serverSocket = new ServerSocket(port);
broadcast("SERVER: " + serverSocket.getInetAddress().getLocalHost().getHostName() + " On port " + port + "is online");
while (true) {
Socket clientSocket = serverSocket.accept();
broadcast(clientSocket.getInetAddress().getHostName() + " Connected");
KlientHanterare client = new KlientHanterare(clientSocket, this, usrName);
users.add(client);
(där users är en arrayList över klienthanterare)
och usrName som skickas med till Klienthanterarens konstruktor är användarnamnet som personen valt när den loggat in.
Sedan vid sändning av meddelanden så använder jag metoden broadcast som ser ut såhär:
public void broadcast(String msg) {
for (KlientHanterare c : users) {
c.sendMessage(msg);
}
För att skicka ut listan över användare som är online så gjorde jag en metod
"public void broadcastUsers(){
for(KlientHanterare c : users){
broadcast(c.gerUserName());
}
}
Den tycker jag borde sända ut samtliga inloggade användares userName till samtliga inloggade...
MEN det gör den inte, den verkar enbart skicka ut den klienten man sitter vids username...
Riktigt irriterande...
någon som vet vad det kan bero på? eller vet någon något smartare sätt en onlinelista går att lösa?