webForumDet fria alternativet

Skriva ut onlinelista från chatserver

0 svar · 378 visningar · startad av nigge

niggeMedlem sedan feb. 2002199 inlägg
#1

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?

330 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
326 ms — hämta tråd, inlägg och bilagor (db)