Skip to content

Latest commit

 

History

History
22 lines (17 loc) · 2.06 KB

README.md

File metadata and controls

22 lines (17 loc) · 2.06 KB

vords_chat

Сервер

Во-первых, он многопоточный.
Есть 2 основых потока:
1) Управляющий поток
Принимает команды от администратора сервера.

Команды:

  • убить сервер
  • отановить / возобновить сервер (после остановки есть возможность принять ещё одно подлючение, потому что поток, отвечающий за это всегда висит на accept)
  • показать лог-файл
  • очистить лог-файл (если сделать это во время работы, то пользователей в текущем сеансе не выкенет и их имена сохранятся в оперативке, но при следующем подключении сервер их не узнает)

2) Поток приёма новых подключений (фукнция main в классе сервера)
Говорит сам за себя, в принципе. Он постоянно ждёт на accept новых клиентов и при новом подключении создаёт свой поток для каждого.

Клиент

При подключении авторизируется. Если его ip нет в лог-файле, то будет предложено выбрать имя (два одинаковых имени не может существоавать, потому как сервер широковещательный — это обработано). В лог зависываются адреса и имена.

Прочее

Сервер работает с двумя списками — log_list и curr_list. В первом хранится состояние лог файла на текущий момент, а второй содержит перечень подключённых клиентов и сокет для связи с ними.