Искал для одной из своих программок открытую сетевую библиотеку, и наткнулся на Lidgren Network library. Сразу стало очевидно, что это пожалуй лучший бесплатный сетевой движок на C#, к тому же opensource.
Основные особенности
- Лёгок в использовании;
- Малая нагрузка на CPU;
- Количество подключений не ограничено.
Надежность
- Дубликаты пакетов автоматически обнаруживаются и отбрасываются для всех методов доставки;
- Упорядочивание пакетов;
- Надежность доставки, потерянные пакеты переотправляются;
- Фрагментация пакетов;
Формат пакета
- Компактный формат пакета;
- Объединение сообщений: несколько сообщений собираются в одно для отправки, если это возможно;
- Чтение/запись BitStream;
- Сжатие для типов integer и float;
Дополнительные функции
- Синхронизация часов для установки меток времени в пакетах;
- Шифрование сообщений (опционально);
- Обнаружение сервера в локальной сети;
- Peer и статистика подключения;
- Перенаправление портов UPnP;
- Поддержка прохождения NAT;
- Возможность моделирования задержки, потери, дублирования пакетов.