/
ledart
/
RRP_LedNik
Обзор
Документация
Войти
/
ledart
/
RRP_LedNik
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
server/Server.java
94 строки
3 KB
Darya
документация
18 дек 2025, 16:18
18 дек 2025, 16:18
e9a3017
Код
Авторство
О чём код?
package server; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Server { private static final int PORT = 5555; private Database db; private ExecutorService pool = Executors.newFixedThreadPool(10); private CopyOnWriteArrayList<Room> rooms = new CopyOnWriteArrayList<>(); private CopyOnWriteArrayList<ClientHandler> clients = new CopyOnWriteArrayList<>(); public Server() { db = new Database(); db.connect(); // Сервер подключается к БД db.init(); // Инициализация таблиц createDefaultRooms(); } private void createDefaultRooms() { rooms.add(new Room("Room 1")); // Создание комнат по умолчанию rooms.add(new Room("Room 2")); rooms.add(new Room("Room 3")); System.out.println("[Server] Created 3 default rooms: Room 1, Room 2, Room 3"); } public void start() { try (ServerSocket serverSocket = new ServerSocket(PORT)) { System.out.println("[Server] Listening on port " + PORT); System.out.println("[Server] Total rooms: " + rooms.size()); while (true) { Socket clientSocket = serverSocket.accept(); System.out.println("[Server] New client connection"); ClientHandler handler = new ClientHandler(clientSocket, db, rooms, this); clients.add(handler); pool.execute(handler); System.out.println("[Server] Active clients: " + clients.size()); } } catch (IOException e) { System.err.println("[Server] Error: " + e.getMessage()); } finally { db.close(); } } public void broadcastToAll(String message) { System.out.println("[Server] Broadcast to all clients (" + clients.size() + "): " + message); for (ClientHandler client : clients) { if (client != null) { client.send(message); } } } public void broadcastChatToAll(String message) { broadcastToAll("LOBBY_CHAT_MSG:" + message); } public void broadcastNewRoom(String roomName) { broadcastToAll("NEW_ROOM:" + roomName); } public void broadcastRoomRemoved(String roomName) { broadcastToAll("ROOM_REMOVED:" + roomName); } public void broadcastSystemMessage(String message) { broadcastChatToAll("[SYSTEM] " + message); } public void removeClient(ClientHandler client) { boolean removed = clients.remove(client); if (removed) { System.out.println("[Server] Client removed: " + (client.getUsername() != null ? client.getUsername() : "unknown")); System.out.println("[Server] Remaining clients: " + clients.size()); } } public static void main(String[] args) { Server server = new Server(); server.start(); } }