Многопоточная библиотека сервера сети UDP для .NET

Есть ли что-то как скрученный (Python) или eventmachine (рубин) на земле .NET?

Мне даже нужна эта абстракция? Я слушаю единственное устройство IO, которое будет отправлять мне события за тремя или четырьмя аналоговыми датчиками, присоединенными к нему. Что является рисками простого использования циклично выполненного UdpClient? Я не могу пропустить события, но стек IP обработает организацию очередей сообщений для меня? Все это зависит от того, сколько работы поток пытается сделать, после того как я получаю сообщение?

То, что я ищу в абстракции, должно удалить сложность поточной обработки и синхронизации от проблемы.

8
задан Sam Coles 12 February 2010 в 00:18
поделиться

3 ответа

Я думаю, вы слишком усложняете задачу. Просто откройте 1 сокет UDP и установите для него асинхронный обратный вызов. Для каждого входящего пакета поместите его в очередь и снова установите обратный вызов. Это оно.

убедитесь, что при постановке в очередь и удалении из очереди вы установили блокировку очереди.

это так просто, и производительность будет отличной.

R

6
ответ дан 5 December 2019 в 22:18
поделиться

Я бы порекомендовал ICE , это коммуникационный механизм, который абстрагирует потоки и взаимодействие с вами (документация является исчерпывающей).

0
ответ дан 5 December 2019 в 22:18
поделиться

Проблема в том, что с Udp вы автоматически принимаете на себя риск потерянные пакеты. Я прочитал документацию по ICE (как предложил Стив), и она очень исчерпывающая. Похоже, что ICE будет работать для Udp, однако похоже, что разработчики предпочитают Tcp. Из документации ICE я понял, что он не предоставляет никаких интенсивных механизмов для обеспечения надежной связи Udp.

На самом деле очень легко настроить асинхронный клиент или сервер Udp. Ваша настоящая работа заключается в проверке полных пакетов и буферизации. Асинхронные реализации должны удерживать вас от управления потоками.

0
ответ дан 5 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: