Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Открытие сокета Boost.Asio UDP с эфемерным портом

Автор вопроса: alpartisОтветов: 1

Я работаю над приложением, которое будет получать пакеты RTP от другой локальной службы по UDP. В начале протокола я получаю сообщение с IP-адресом, с которого я буду получать эти пакеты RTP, но номер порта будет указан как 0 (ноль) ... Я должен открыть свой сокет UDP, используя эфемерный порт. Мой ответ на данное сообщение будет содержать фактический порт, который я открыл, чтобы отправитель мог знать, куда направлять пакеты.

Моя сетевая библиотека представляет собой реализацию сокетов с boost::asio. Где найти четкую информацию, как открыть такой сокет без указания ненулевого порта, т.е. использовать эфемерный порт? Поиск в документации по ускорению для "эфемерного" не дает мне результатов в сети.

Конечно, я готов увидеть реальный пример, но было бы неплохо найти хорошую документацию.

Спасибо.

  • эфемерный означает, что другому концу протокола все равно, какой порт вы используете, в этом случае просто выберите один. Я что-то упускаю? Chad 11.09.2012
  • Я бы предпочел, чтобы базовая ОС выбрала порт, поскольку мое приложение не может знать, что может использовать любое другое запущенное в данный момент приложение в эфемерном диапазоне. alpartis 11.09.2012

c++udpsocketsboost-asio

Ответы

Ответ 1 · рейтинг 6 · Nikolai Fetissov

Я бы поставил под сомнение использование таких эфемерных портов, но ... - вы можете привязать свой UDP-сокет к порту 0, а затем использовать local_endpoint() для получения фактического порта, назначенного ОС.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы