По поводу классов для упаковки/распаковки. Это зависит от фреймворков работы с сетью. В большинстве случаев используются экземпляры на каждый пакет запроса и ответа. Распространенным упаковщиком для игровых протоколов является google protocol buffers (популярные альтернативы: https://en.wikipedia.org/wiki/Comparison_of_data_s... ). Но не рассматривайте его как решение "все из коробки". Придется решить много других вопросов: TCP или UDP, режим полудуплекс/полный дуплекс, нумерация пакетов, поведение при обрыве связи (а они обязательно будут), безопасность (аутентификация клиента, шифрование трафика) и пр. А главное - это дизайн самой игры (ее протокол как часть игрового процесса).
В сервере как правило используется неблокирующий режим сокета (non-blocking IO) - это позволяет серверу одновременно обслуживать большое число клиентов. На клиенте это не очень принципиально и блокирующий режим может использоваться, т.к. он более прост в реализации.
Рекомендую использовать фреймворки для работы с сетью - это сильно упростит жизнь и позволит все это сделать более красиво и ясно. На java мейнстим - Netty для бинарных протоколов, для C# не могу точно сказать, но предполагаю, что https://github.com/Azure/DotNetty может быть не плох.
red_line_nes: наверно тогда ant шел бы в комплекте библиотек maven, а так это всего лишь плагин (скачиваемый отдельно). И вообще это идеологически разные вещи, ant-скриптовый инструмент, maven - основанный на lifecycle и декларациях - общего в них почти ничего нет.
red_line_nes: по поводу как относится - здесь как посмотреть. IMHO, относится, т.к. система сборки сопровождает практически любой проект. Что касается проектов, к которым я имел отношение последние 5 лет - ant там присутствовал как правило как историческое наследие, просто потому что еще не перевели на другую систему. Сам много им пользовался когда-то - был очень уместен для платформы j2me, в проектах стека java se основная проблема с импортом проектов в IDE, которая как раз решается в системах вроде maven и gradle.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
В сервере как правило используется неблокирующий режим сокета (non-blocking IO) - это позволяет серверу одновременно обслуживать большое число клиентов. На клиенте это не очень принципиально и блокирующий режим может использоваться, т.к. он более прост в реализации.
Рекомендую использовать фреймворки для работы с сетью - это сильно упростит жизнь и позволит все это сделать более красиво и ясно. На java мейнстим - Netty для бинарных протоколов, для C# не могу точно сказать, но предполагаю, что https://github.com/Azure/DotNetty может быть не плох.