/
itokar98
/
java-diplom-networkchat
Обзор
Документация
Войти
/
itokar98
/
java-diplom-networkchat
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/organization/server/ChatServer.java
52 строки
2 KB
Ilya Tokar
First commit
21 дек 2025, 15:29
21 дек 2025, 15:29
3f8814c
Код
Авторство
О чём код?
package com.organization.server; import com.organization.config.ServerConfig; import com.organization.service.MessageBroadcastService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ChatServer { private static final Logger logger = LogManager.getLogger(ChatServer.class); private final ServerConfig config; private final MessageBroadcastService broadcastService; private final ExecutorService threadPool; private volatile boolean running; public ChatServer(ServerConfig config) { this.config = config; this.broadcastService = new MessageBroadcastService(); this.threadPool = Executors.newCachedThreadPool(); } public void start() { running = true; try (ServerSocket serverSocket = new ServerSocket(config.getPort())) { logger.info("Server started on port {}", config.getPort()); while (running) { Socket clientSocket = serverSocket.accept(); ClientHandler clientHandler = new ClientHandler(clientSocket, broadcastService); threadPool.submit(clientHandler); } } catch (IOException e) { if (running) { logger.error("Server exception: ", e); } } finally { shutdown(); } } public void shutdown() { running = false; threadPool.shutdown(); logger.info("Server shutdown initiated"); } }