Содержание

Сервер

В пространстве имён 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).

Похожие записи