@DenisVladimirovich

Как запустить обработчик для UDP соединения?

И так. К сути. Подскажите. Создал простой сервер для одного клиента по UDP протоколу. При написании сервера для большого количества клиентов, столкнулся с такой проблемой, а именно как обрабатывать каждого клиента. В Java так скажем в netty создавался канал. Еслть ли что-то подобное в C++?
  • Вопрос задан
  • 464 просмотра
Пригласить эксперта
Ответы на вопрос 2
dummyman
@dummyman
диссидент-схизматик
Вообще, серверы обычно пишут на Си.
Но если плюсы вам ближе, все такие вопросы решает Boost. А конкретнее вам может подойти Boost.Asio.
Ответ написан
Комментировать
TrueBers
@TrueBers
Гуглю за еду
Ну, так, а вы почитайте про разницу UDP и TCP и всё станет понятно.

В UDP нет понятия подключения или потока байт. Там есть понятия датаграмм. Это атомарные сущности, которые принимаются точно так же, как и отсылаются, абсолютно в том же виде.

Каналы в джаве созданы просто для унификации, для некого подобия псевдо-стримминга для удобной обработки. На самом же деле, никакого канала и потока нет. Есть отдельные датаграммы определённого размера, которые вы должны принимать.
Каждый клиент идентифицируется по его паре адрес:порт, с которого пришли данные через функцию recvfrom. Других вариантов нет.

Это, если нужна синхронная обработка. Для асинхронного варианта, как уже ответил dummyman, удобнее использовать Asio.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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