Стратегия двусторонней связи с UDPClients

Привет, мне интересно, как настроить UDPClients, чтобы обеспечить двустороннюю связь между клиентами в режиме реального времени.

Я работаю над простой сетевой игрой на С#, у игрока должна быть возможность разместить игру, а другим подключиться к ней.

Хост будет отправлять новое состояние игры каждые X миллисекунд и одновременно будет получать непрерывный поток пользовательского ввода от других игроков.

Другие игроки будут постоянно ждать новых состояний ввода, а также отправлять пользовательский ввод хосту.

Мне интересно, как этого добиться.

Должен ли я использовать 2 разных UDPClient, нет ли потенциального конфликта потоков, если они попытаются использовать один и тот же ресурс одновременно? Если нет, нужно ли мне настраивать их каким-то особым образом, иначе, если я использую 1 UDPClient, есть ли что-то особенное, что мне нужно учитывать, или это потокобезопасно, и я могу просто отпускать новые сообщения во время получения?


person user25470    schedule 19.12.2014    source источник


Ответы (1)


UDP — это дуплексный протокол (как и TCP).

Вы можете безопасно отправлять и получать объект UDPClient одновременно. Вы не должны не использовать два объекта UDPClient.

Однако эти операции выполняются в отдельных потоках (или псевдопотоках, если вы используете await/async), поэтому вы можете столкнуться с проблемами синхронизации в вызывающем коде (очевидно, трудно сказать, не видя этого). , но потенциал есть).

person BradleyDotNET    schedule 19.12.2014