Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > .NET: Общие вопросы > AppServer на C# |
Автор: VisualProg 22.08.17, 08:10 |
Здравствуйте! Необходимо найти достаточно шуструю библиотеку на соккетах для шарпа, но ничего под руку не попадается... Подробнее: есть сервер, на нём планирую поднять серверное приложение (часть игры), которое будет обслуживать около сотни клиентов. Общение между игроками и сервером достаточно простое: - Протокол TCP, либо свой, но аналогичный (нужна гарантия доставки пакетов). - Веб-сервер не нужен. (Слишком много трафика уходит в никуда) - Нет требований к шифрованию трафика. - Нет требований к передачи информации в режиме реального времени. (Клиенты не "спамят" трафиком, они шлют небольшие команды, время от времени) - Полученные сообщения для обработки можно выстраивать в произвольную очередь. (Порядок не важен) - Клиенты не общаются друг с другом, всё идёт только на сервер, от сервера к клиентам. - Не обязательно наличие сериализации/десериализации объектов, достаточно передачи примитивов (byte[], string, uint, ulong, double, ...) - Сервер должен держать соккеты всех "живых клиентов", желательно, чтобы он инкапсулировал свою многопоточную реализацию. (Если на клиента не выделяется отдельного потока - не страшно, главное чтобы запросы пары сотен активных клиентов, хотя бы в теории, было возможно обработать и ответить) На шарпе я с подобным не сталкивался. Вручную всё это писать не хочу (слишком долго), да и не уверен, что смогу сделать всё грамотно (не факт что вообще смогу). В основном работал с JBOSS, немного с Tomcat, но, это всё java, да и заточено, по большей части, на HTTP. В поисках истины наткнулся на хорошие отзывы о FlexibleGameServer, описания не плохое, вроде, делает то что мне надо, и даже больше, скачал пробную версию и пример чата. Но, не судьба, не запустился) Тема для меня достаточно сложная, подскажите, где можно достать подобную библиотечку с парой примеров её использования? |
Автор: 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, но, нет, вроде в разы проще. |