Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.168.56] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Необходимо найти достаточно шуструю библиотеку на соккетах для шарпа, но ничего под руку не попадается... Подробнее: есть сервер, на нём планирую поднять серверное приложение (часть игры), которое будет обслуживать около сотни клиентов. Общение между игроками и сервером достаточно простое: - Протокол TCP, либо свой, но аналогичный (нужна гарантия доставки пакетов). - Веб-сервер не нужен. (Слишком много трафика уходит в никуда) - Нет требований к шифрованию трафика. - Нет требований к передачи информации в режиме реального времени. (Клиенты не "спамят" трафиком, они шлют небольшие команды, время от времени) - Полученные сообщения для обработки можно выстраивать в произвольную очередь. (Порядок не важен) - Клиенты не общаются друг с другом, всё идёт только на сервер, от сервера к клиентам. - Не обязательно наличие сериализации/десериализации объектов, достаточно передачи примитивов (byte[], string, uint, ulong, double, ...) - Сервер должен держать соккеты всех "живых клиентов", желательно, чтобы он инкапсулировал свою многопоточную реализацию. (Если на клиента не выделяется отдельного потока - не страшно, главное чтобы запросы пары сотен активных клиентов, хотя бы в теории, было возможно обработать и ответить) На шарпе я с подобным не сталкивался. Вручную всё это писать не хочу (слишком долго), да и не уверен, что смогу сделать всё грамотно (не факт что вообще смогу). В основном работал с JBOSS, немного с Tomcat, но, это всё java, да и заточено, по большей части, на HTTP. В поисках истины наткнулся на хорошие отзывы о FlexibleGameServer, описания не плохое, вроде, делает то что мне надо, и даже больше, скачал пробную версию и пример чата. Но, не судьба, не запустился) Тема для меня достаточно сложная, подскажите, где можно достать подобную библиотечку с парой примеров её использования? |
Сообщ.
#2
,
|
|
|
Никогда не юзал подобное на C#. Копать в сторону IOCP, если под Win.
Из того, что видно, так это: AsyncIO (есть пример), Leak (но как часть всего проекта, в nuget Leak.IO). А вот на C++ дополна всего интересного: libevent, libev, libuv, boost::asio (asio больше всего нравится, но C++/CLI проект вряд ли нормально получится сделать). А если сильно просто надо, можно поглядеть видимо на: NetworkComms.Net |
Сообщ.
#3
,
|
|
|
В общем, начал разбирать TcpListener и TcpClient, естно, там хрен знает сколько надо делать самому, но, походу это самый простой для меня вариант, + можно мудрить с каллбеками. До этого, думал что в шарпе сокеты на уровне виндового Api, но, нет, вроде в разы проще.
|