Повторное использование номера порта в UDP

В ASIO возможно ли создать другой сокет, который имеет тот же порт источника, что и другой сокет?

Мое UDP-приложение сервера вызывает receive_from, используя порт 3000. Он передает пакет рабочему потоку, который отправит ответ (в настоящее время использует динамический исходный порт).

Сокет в другом потоке создается так:

udp::socket sock2(io_service, udp::endpoint(udp::v4(), 0));

И отвечает на исходный запрос, используя sender_endpoint, сохраненный с исходным пакетом.

То, что я хотел бы сделать, это ответить клиенту, используя тот же порт источника, который прослушивает сервер. Но я не понимаю, как это можно сделать. Я получаю исключение, если я пытаюсь использовать этот говорящий адрес. Можно ли сделать то, что я спрашиваю? Причина, по которой я хочу, заключается в том, что если я использую динамические порты, это означает, что клиенты должны добавить специальные правила брандмауэра в окнах, чтобы разрешить чтение ответных пакетов. Я обнаружил, что если в ответе порт источника совпадает, брандмауэр Windows разрешит ему вернуться обратно.

Ответы на вопрос(3)

Ваш ответ на вопрос