import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; public class ChatServer { private int port; private List clients; public ChatServer(int port) { this.port = port; this.clients = new ArrayList<>(); } public void start() { try (ServerSocket serverSocket = new ServerSocket(port)) { System.out.println("Chat server started on port " + port); while (true) { Socket clientSocket = serverSocket.accept(); System.out.println("New client connected: " + clientSocket); ClientHandler client = new ClientHandler(this, clientSocket); clients.add(client); client.start(); } } catch (IOException e) { System.err.println("Error starting server: " + e.getMessage()); } } public void broadcast(String message) { for (ClientHandler client : clients) { client.send(message); } } public void removeClient(ClientHandler client) { clients.remove(client); } public static void main(String[] args) { ChatServer server = new ChatServer(9000); server.start(); } }