Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Общие вопросы > AppServer на C#


Автор: VisualProg 22.08.17, 08:10
Здравствуйте!

Необходимо найти достаточно шуструю библиотеку на соккетах для шарпа, но ничего под руку не попадается...

Подробнее: есть сервер, на нём планирую поднять серверное приложение (часть игры), которое будет обслуживать около сотни клиентов.

Общение между игроками и сервером достаточно простое:

- Протокол TCP, либо свой, но аналогичный (нужна гарантия доставки пакетов).
- Веб-сервер не нужен. (Слишком много трафика уходит в никуда)
- Нет требований к шифрованию трафика.
- Нет требований к передачи информации в режиме реального времени. (Клиенты не "спамят" трафиком, они шлют небольшие команды, время от времени)
- Полученные сообщения для обработки можно выстраивать в произвольную очередь. (Порядок не важен)
- Клиенты не общаются друг с другом, всё идёт только на сервер, от сервера к клиентам.
- Не обязательно наличие сериализации/десериализации объектов, достаточно передачи примитивов (byte[], string, uint, ulong, double, ...)
- Сервер должен держать соккеты всех "живых клиентов", желательно, чтобы он инкапсулировал свою многопоточную реализацию. (Если на клиента не выделяется отдельного потока - не страшно, главное чтобы запросы пары сотен активных клиентов, хотя бы в теории, было возможно обработать и ответить)

На шарпе я с подобным не сталкивался. Вручную всё это писать не хочу (слишком долго), да и не уверен, что смогу сделать всё грамотно (не факт что вообще смогу). В основном работал с JBOSS, немного с Tomcat, но, это всё java, да и заточено, по большей части, на HTTP.

В поисках истины наткнулся на хорошие отзывы о FlexibleGameServer, описания не плохое, вроде, делает то что мне надо, и даже больше, скачал пробную версию и пример чата. Но, не судьба, не запустился)
user posted image

Тема для меня достаточно сложная, подскажите, где можно достать подобную библиотечку с парой примеров её использования?

Автор: Axis 22.08.17, 12:04
Никогда не юзал подобное на C#. Копать в сторону IOCP, если под Win.

Из того, что видно, так это: AsyncIO (есть пример), Leak (но как часть всего проекта, в nuget Leak.IO).
А вот на C++ дополна всего интересного: libevent, libev, libuv, boost::asio (asio больше всего нравится, но C++/CLI проект вряд ли нормально получится сделать).

А если сильно просто надо, можно поглядеть видимо на: NetworkComms.Net

Автор: VisualProg 23.08.17, 14:37
В общем, начал разбирать TcpListener и TcpClient, естно, там хрен знает сколько надо делать самому, но, походу это самый простой для меня вариант, + можно мудрить с каллбеками. До этого, думал что в шарпе сокеты на уровне виндового Api, но, нет, вроде в разы проще.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)