Ищу высокоуровневую библиотеку для сокет программирования (Java или Python) - PullRequest
9 голосов
/ 13 ноября 2009

Короче говоря, я создаю многопользовательскую игру на основе Flash и сейчас начинаю работать над серверным кодом. Ну, я единственный разработчик проекта, поэтому я ищу высокоуровневую библиотеку сокетов, которая хорошо работает с играми, чтобы ускорить мое время разработки.

Я пытался использовать Twisted Framework (для Python), но у меня возникли некоторые личные проблемы с ним, поэтому я ищу другое решение.

Я открыт для библиотек на основе Java или Python. Главное, что библиотека достаточно стабильна для многопользовательских игр, и библиотека должна быть «высокого уровня» (абстрактная), так как я новичок в программировании сокетов для игр.

Хочу также отметить, что я буду использовать сырой двоичный сокет для моей игры Flash (Actionscript 3.0), поскольку я предполагаю, что он будет быстрее, чем традиционный сокет Flash XML.

Ответы [ 4 ]

7 голосов
/ 13 ноября 2009

Опция для Python - это фреймворк Concurrence . Я использовал его сравнительно недавно, в сочетании с Stackless Python , для имитации среды, в которой было потенциально тысячи запросов в секунду, каждый из которых должен был обрабатываться менее чем за 2 секунды. API очень прост и хорошо документирован.

Я очень близко подошел к реализации на Java с использованием Netty , который является проектом JBoss.

0 голосов
/ 13 ноября 2009

Для Java есть Apache mina и Grizzly фреймворки, которые действительно упрощают работу с сокетами

0 голосов
/ 13 ноября 2009

См. «Краткое руководство по ActionScript 3 и программированию Flash» . В нем приведен подробный пример клиентского кода ActionScript, использующего сокеты для связи с сервером Python (включая код). Не то, что кто-либо назовет high-level , он использует базовый модуль сокета Python для связи.

(Примечание: пример сервера Python не pythonic . Получив общее представление об использовании сокетов в Python, напишите что-нибудь попроще и НЕТ from socket import *)

0 голосов
/ 13 ноября 2009

Высокий уровень с одной стороны и необработанные двоичные сокеты с другой не будут работать. Извините, но вам также нужно перейти на низкий уровень на стороне сервера.

РЕДАКТИРОВАТЬ: в ответ на комментарий ОП. Я не знаю ни о каком «высокоуровневом» интерфейсе той природы, о которой вы говорите для Java. И, честно говоря, я не думаю, что это имеет большой смысл. Если вы собираетесь передавать байты через потоки Socket, вам действительно необходимо понимать стандартные API JDK Socket / ServerSocket; например таймауты, поддержание активности и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...