Этот проэкт является экзаменом по сетевому программированию
Игровое пирложение Клиент - поле, на поле игроки могут только перемещатся. Стартовое окно - поля для айпи сервера, имя игрока, комбо с выбором карты
Сервер поддерживает 5 игр, которые различаются битмапами на фоне. Список текущих игр.
Протоколы: Общие принципы
первые 2 байта - длина сообщения (unsigned short). 3 и 4 байт - тип сообщения (unsigned short, можно было бы обойтись и одним байтом, но так мы выравняем адреса), от его значения и от того в какую сторону оно направлено (от сервера или от клиента) зависит дальнейшее содержимое
протокол передачи списка карт. 1. От клиента серверу передается 4 байта - длина и код 1. 2. От сервера клиенту передается размер и код 2.
Структура пакета:
ushort count
array mapInfo[];
struct mapInfo{
string name;
unsigned short width,height;
byte[32] hashCode;
} хешкод используется для проверки того, является ли локальная копия карты валидной.
протокол передачи карты. 1. От клиента серверу передается код 3 2. От сервера клиенту передается код 4 затем uint размер файла и byte[] с содержимым файла карты.
все что написано выше - фигня полная. Для реализации протоколоа я использую базовый класс netMessage и производные от него. Каждый дочерний класс являет собой данные сообщения. В базовом реализованы функции readMessage и sendMessage, принимающие нетворкстрим в который пишется или из которого читается. Все это чудо основано на бинарной сериализации, вынесено в отдельный dll модуль, подключеный к обеим проектам (клиента и сервера). Не знаю как это скажется на скорости, но должно очень положительно повлиять на скорость разработки (пишу эти строки в четверг в пол двенадцатого 8) )