гравця, enemy_login - логін опонента, x і y - координати ходу.
Пакет відсутності ходів. Цей пакет використовується, коли не залишається більше вільних полів для ходу, тобто гра закінчується в нічию. Формат пакета наступний:
no_mooves!; enemy_login; x; y;
де no_mooves! - Заголовок пакета відсутності ходів, enemy_login - логін опонента, x і y - координати ходу. p align="justify"> Пакет пінгу. Цей пакет використовується для визначення активності клієнтів і сервера. Якщо пакет не повертається, значить клієнт/сервер відключені. Формат пакета наступний:
ping;
де ping - заголовок пакета пінгу.
Пакет підключення користувача. Цей пакет використовується для оповіщення користувачів в мережі про підключення нового користувача. Формат пакета наступний:
online; login;
де online - заголовок пакета підключення користувача, login - логін підключився користувача.
Пакет відключення користувача. Цей пакет використовується для оповіщення користувачів в мережі про відключення одного з користувачів. Формат пакета наступний:
offline; login;
де offline - заголовок пакета відключення користувача, login - логін відключити користувача.
2.3 Функціонування сервера
Виходячи з вимоги, що сервер повинен одночасно організовувати роботу з декількома клієнтами, він повинен бути багатопоточним.
Виділимо наступні частини системи, які повинні виконуватися паралельно:
. Широкомовна розсилка пакетів всім підключеним користувачам локальної мережі - BroadcastManager;
. Обробка підключень нових користувачів - ConnectManager;
. Обробка даних, одержуваних від користувачів і відправляються користувачам - ClientsManager;
. Обробка даних, пов'язаних з одним конкретним користувачем (отримання та відправлення) - ClientManager;
Деякі з цих частин повинні одночасно використовувати загальні ресурси, а саме:
. Загальна черга для розсилки пакетів. У цю чергу будуть додаватися всі пакети, що приходять від усіх користувачів, і з цієї черги будуть вибиратися пакети для відправки кожного клієнта. Черга буде одночасно використовуватися частинами BroadcastManager і ClientManager.
. Черга пакетів для відправки конкретному клієнтові. У цю чергу будуть додаватися пакети, які необхідно відправити конкретному клієнтові. Черга буде одночасно використовуватися частинам...