Содержание
Сервер
В пространстве имён Server реализованы следующие классы:
Net — реализует работу с сетевым интерфейсом;
Game — хранит сведения о текущем состоянии игры;
User — хранит всю необходимую информацию о пользователе;
Core — адаптер для связи трёх вышеупомянутых классов.
Алгоритм работы класса Net
Конструктор класса Net принимает на вход ip адрес и порт на котором должен работать сервер и порождает два потока: OpenConnection и SendMessage.
В классе Net реализованы следующие методы:
OpenConnection — поток для открытия новых соединений с сервером. Связывает имена пользователей и их дескрипторы и помещает результат в connect_clients (unordered map), а имя клиента помещает в очередь новых клиентов. Затем порождает поток ReadMessage для подключившегося клиента.
ReadMessage — поток для приема входящих сообщений. Создается для каждого клиента. Занимается тем, что помещает пришедшее от клиента сообщение в единую очередь пришедших сообщений.
SendMessage — поток для отправки сообщений пользователям. Занимается тем, что изымает из очереди очередное сообщение, которое необходимо отправить, после чего ищет имя клиента в connect_clients, получает дескриптор соединения и отправляет сообщение.
CloseConnection — закрывает соединение с клиентом.
Send — функция помещает сообщения для клиента в очередь на отправку. В отличии от вышеперечисленных функций входит в интерфейс.
Recv — блокирующая функция, которая возвращает первое пришедшее от клиентов сообщение (входит в интерфейс).
GetNewClientName — блокирующая функция, которая возвращает имя первого клиента находящегося в очереди подключившихся клиентов (входит в интерфейс).
Выдержка из текста
Суть данного курсового проекта заключается в реализации сетевой игры “Крестики нолики” на языке C++, с интегрированным чатом между пользователями и комнатами игроков. Взаимодействие между клиентами необходимо реализовать посредством системных вызовов, предоставляемых Socket API.
Список использованной литературы
Announcing ncurses 6.0 [Электронный ресурс] / 1998,2000,2004,2005,2006,2008,2011,2015 Free Software Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301, USA Режим доступа: https://www.gnu.org/software/ncurses/ncurses.html, свободный. (Дата обращения: 13.12.2017).
Библиотека ncurses [Электронный ресурс] / Copyright 2005-2006 Бердников Александр Режим доступа: http://alexber220.narod.ru/ncurses/, свободный (Дата обращения: 13.12.2017).
Изучите алгоритмы работы системных вызовов TCP [Электронный ресурс] / Бинду Анупама Режим доступа: https://www.ibm.com/developerworks/ru/library/au-tcpsystemcalls/index.html, свободный (Дата обращения: 10.12.2017).