Class ClientHandler
java.lang.Object
java.lang.Thread
server.ClientHandler
- All Implemented Interfaces:
Runnable
Класс ClientHandler обрабатывает соединение с одним клиентом.
Отвечает за регистрацию, вход в систему, отправку и получение сообщений, а также управление историей сообщений и активными пользователями. Логирование действий происходит через Log4j2.
-
Nested Class Summary
Nested classes/interfaces inherited from class Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
Fields inherited from class Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY -
Constructor Summary
ConstructorsConstructorDescriptionClientHandler(Socket soc) Создаёт новый обработчик клиента с заданным сокетом. -
Method Summary
Modifier and TypeMethodDescriptionbooleanisClosed()Проверяет, закрыто ли соединение с клиентом.voidrun()Основной метод потока, который запускается при старте ClientHandler.voidsendMessage(String message) Отправляет текстовое сообщение клиенту через сокет.Methods inherited from class Thread
activeCount, checkAccess, clone, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, isVirtual, join, join, join, join, ofPlatform, ofVirtual, onSpinWait, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, sleep, start, startVirtualThread, stop, threadId, toString, yield
-
Constructor Details
-
ClientHandler
Создаёт новый обработчик клиента с заданным сокетом.- Parameters:
soc- сокет, соединяющий сервер с клиентом
-
-
Method Details
-
isClosed
public boolean isClosed()Проверяет, закрыто ли соединение с клиентом.- Returns:
true, если сокет закрыт или null, иначеfalse
-
run
public void run()Основной метод потока, который запускается при старте ClientHandler.Обрабатывает команды клиента:
- /register login password — регистрация нового пользователя
- /login login password — вход в систему
- /msg target message — отправка сообщения другому пользователю
- /history user — вывод истории переписки с другим пользователем
- /exit — завершение соединения
Логирование событий:
- Подключение клиента
- Регистрация и вход пользователя
- Отправка сообщений
- Ошибки при обработке сообщений
-
sendMessage
Отправляет текстовое сообщение клиенту через сокет.- Parameters:
message- текст сообщения
-