public class Server { static Map<String, Connection> connectionMap; static { connectionMap = new ConcurrentHashMap(); } public static void main(String[] args) throws IOException { int port = ConsoleHelper.readInt(); ServerSocket ss = new ServerSocket(port); ConsoleHelper.writeMessage("Server is running"); try { while (true) { // socket object to receive incoming client requests Socket s = ss.accept(); // create a new thread object Handler handler = new Handler(s); handler.start(); } } catch(Exception e){ ConsoleHelper.writeMessage(e.getMessage()); ss.close(); } } public static void sendBroadcastMessage(Message message){ for(Connection c : connectionMap.values()){ try { c.send(message); } catch (IOException e) { ConsoleHelper.writeMessage("Message couldn't be sent."); } } } private static class Handler extends Thread{ Socket socket; public Handler(Socket socket){ this.socket = socket; } } }