@DenisVladimirovich

Как сортировать клиентов на UDP протоколе?

Добрый вечер(день). Пишу сервер на C. И при проектировании взаимодействия встал вопрос сортировки пакетов между клиентами. Подскажите, как лучше?
1) Есть map клиентов. При присылаемом пакете я определяю по IP:PORT есть ли такой клиент. Затем если нет, то создаю такого клиента в поток и детачу. А уже внутри он обрабатывает все входящие пакеты и выполняет только те, которые присланы ему. И так с каждым клиентом.
2) Есть опять же список клиентов, но в этом случае, каждый раз вызывается обработчик для пакета без создания в поток.
3) Либо же 2 вариант, только каждый пакет это считай новый поток на выполнение
Что подскажете? Как это сделать в Udp? Просто была ещ одна идея: открыть и TCP и UDP в одном сервере. При новом TCP, создавать клиента с TCP подключением и дескриптором UDP сокета. И уже внутри обрабатывать.
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Выбор зависит от типа игры.
Обычно, делается отдельно:
1. Обработка для юникаст-соединений (шлём сразу нескольким клиентам). Создаём один бесконечный поток. При получении - обрабатываем также в одном едином потоке.
2. Обработчик клиент-серверного обмена (данные, не влияющие на игровой процесс других игроков). Создаём "умирающие" экземпляры потоков. Обрабатываем в отдельных потоках.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы