From 53e40ca2f5f1a51958e2bf2103b0ceb93a0da55f Mon Sep 17 00:00:00 2001 From: emad Date: Sun, 7 Jun 2026 20:20:49 +0430 Subject: [PATCH] implementation --- src/main/java/chat/ChatServer.java | 19 ++++++++++--------- src/main/java/chat/MessageListener.java | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/chat/ChatServer.java b/src/main/java/chat/ChatServer.java index 80fe786..d9620d1 100644 --- a/src/main/java/chat/ChatServer.java +++ b/src/main/java/chat/ChatServer.java @@ -42,11 +42,11 @@ public class ChatServer { // step 1: iterate through connectedClients safely // step 2: skip the sender client // step 3: send message to remaining clients using sendMessage - for(ClientHandler client: connectedClients) - { - if(!client.getUsername().equals(sender.getUsername())) - { - client.sendMessage(message); + synchronized (connectedClients) { + for (ClientHandler client : connectedClients) { + if (client != sender) { + client.sendMessage(message); + } } } } @@ -54,9 +54,10 @@ public class ChatServer { public void broadcastSystemMessage(String message) { // step 1: iterate through all connected clients // step 2: send system message to each client - for(ClientHandler client: connectedClients) - { - client.sendMessage(message); + synchronized (connectedClients) { + for (ClientHandler client : connectedClients) { + client.sendMessage(message); + } } } @@ -65,7 +66,7 @@ public class ChatServer { // step 2: retrieve username from clientHandler // step 3: broadcast system message about user leaving connectedClients.remove(clientHandler); - broadcastSystemMessage(clientHandler.getUsername() + " left"); + broadcastSystemMessage("[System] " + clientHandler.getUsername() + " left the chat"); } public static void main(String[] args) { diff --git a/src/main/java/chat/MessageListener.java b/src/main/java/chat/MessageListener.java index 1cbdda2..609615d 100644 --- a/src/main/java/chat/MessageListener.java +++ b/src/main/java/chat/MessageListener.java @@ -23,7 +23,7 @@ public class MessageListener implements Runnable { } } catch (IOException e) { - throw new RuntimeException(e); + System.err.println(e.getMessage()); } } }