Хотелось бы найти сетевую библиотеку для C# TCP/IP для создания многопоточных серверов. Хотелось, чтобы передача данных осуществлялась с помощью пакетов. Можно было бы принимать данные как синхронно, так и асинхронно и работать с каждым клиентом отдельно. Также хотелось бы чтобы пакеты сериализовались в BSON или JSON.
Пробовал реализовать что-то свое, но получилось криво и почему-то пакеты иногда теряются и сбивается весь цикл чтения и парсинга пакетов. Для Java есть подобные библиотеки, а вот для .NET найти не могу. Спасибо за помощь!
Библиотек таких я лично не знаю. Возможно, они и есть, но толку от них было бы немного. Такие вещи реализуются самостоятельно. Используйте потоковые сокеты.
Создаёте Socket, привязываете к локальной конечной точке (метод Bind), указываете количество входящих соединений (метод Listen, -1 для неограниченного количества), принимаете входящие соединения и обрабатываете каждое в отдельном потоке. Что касается данных пакета, я думаю сами найдёте способ представления данных в нужном формате. Пусть будет метод, который перед отправкой всё вам завернёт в BSON или JSON, сериализует и пустит в сокет (десериализует при приёме).
Значит чат я бы на вашем месте организовал так:
Если речь шла бы о промышленных масштабах, то нужно продумать ещё и алгоритм распределения нагрузки (но это уже отдельная тема).
UPD: На счёт того, что вы теряете пакеты - да, это может быть (так уж устроены сокеты). Советую почитать спецификацию по winsock. Сам встречался с такой проблемой. Решил в итоге расширить размер входного буфера сокета (Socket.ReceiveBufferSize) и создать что-то типа своего буфера (отдельный поток, который читает все данные с сокета, как только они там появляются (Socket.Poll), и копирует в мой буфер - решение рабочее, но такое себе наверное (мне лень было тогда вникать)).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу клиент-серверную системуДля управления сервером (включение, отключение, просмотр подключенных клиентов и т
К примеру, на сырых данных GPS'а с телефона (компьютера, да с чего угодно) - я еду где-то по реке, но на самом деле - на мосту через эту реку, в метрах...