Reutilizando um número de porta em um UDP

No ASIO, é possível criar outro soquete que tenha a mesma porta de origem que outro soquete?

Meu aplicativo de servidor UDP está chamando receive_from usando a porta 3000. Ele passa o pacote para um thread de trabalho que enviará a resposta (atualmente usando uma porta de origem dinâmica).

O soquete no outro encadeamento é criado assim:

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

E responde à solicitação original usando o sender_endpoint salvo com o pacote original.

O que eu gostaria de poder fazer é responder ao cliente usando a mesma porta de origem em que o servidor está escutando. Mas não consigo ver como isso pode ser feito. Recebo uma exceção se tentar esse endereço dizendo em uso. É possível fazer o que estou pedindo? A razão pela qual desejo isso é que se eu usar portas dinâmicas, isso significa que os clientes precisam adicionar regras especiais de firewall no Windows para permitir a leitura dos pacotes de resposta. Descobri que, se a porta de origem for a mesma na resposta, o firewall do Windows permitirá que ela retorne.

questionAnswers(3)

yourAnswerToTheQuestion