Асинхронный UDP-сервер для нескольких клиентов в C # - PullRequest
0 голосов
/ 22 марта 2011

У меня есть задача, и я новичок в сети, поэтому хотел бы обсудить, прежде чем кодировать вниз.Я должен записать серверное приложение UDP.Сервер прослушивает запрос на подключение от многих клиентов (может быть 100 или более).Когда он получает его, он делает некоторое рукопожатие, посылая подтверждение назад и вперед пару раз, чтобы клиентское приложение узнало его личность.Когда соединение установлено, он получает различные типы данных от клиентов, которые он обрабатывает, помещает в базу данных sql и отправляет подтверждение обратно клиенту.Периодически отправляйте команду клиентам для получения конкретной необходимой информации.

Я использую C # с Visual Studio 2005. Должен ли я использовать многопоточность?Threadpool?Асинхронный или синхронный UDP-сервер?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Вы уверены, что хотите UDP-сервер? Такие термины, как «соединения», «рукопожатия», связаны с TCP.

0 голосов
/ 22 марта 2011

Я бы использовал асинхронные методы как на сервере, так и на клиенте.Это усложнит вещи, особенно у клиента.

Причина в том, что вы пишете, что сервер иногда отправляет данные клиенту.Это делает невозможным простой тип запроса / ответа (клиент вызывает Send, а затем использует Receive, пока не будет получен правильный ответ).

Если вы можете отменить это требование, я бы использовал синхронных клиентов(вместо этого сделайте опрос), что значительно облегчит вам понимание.

Если у вас есть .Net 3.5, почему бы вам не создать службу WCF?Он поддерживает TCP и обратные вызовы (сервер может вызывать вещи в клиенте).

...