Você está enganado - a singularidade do soquete é determinada por quatro fatores:
- o endereço IP local
- o número da porta local
- o endereço IP remoto
- o número da porta remota
Ao oferecer serviços de rede, 1. e 2. geralmente são estáticos (por exemplo, IP 10.0.0.1, porta 80), mas, a menos que você esteja esperando milhares de conexões de um único cliente (ou um único gateway NAT), você não precisará pressionar o limites para as combinações possíveis de 3. e 4. antes de ficar sem recursos locais.
Portanto, embora praticamente um cliente não use uma porta já usada para uma conexão para abrir uma conexão com um endereço IP de destino diferente, o esgotamento do número da porta será o menor dos seus problemas para praticamente qualquer aplicativo - seja no servidor ou no servidor. lado do cliente.
O problema é bem real: os gateways NAT (roteadores) atendem a clientes com um alto número de conexões de saída abertas (por exemplo, torrents) - você verá o número de portas esgotado depois que o pool de portas disponível para NAT for esvaziado. Nesse caso, o gateway NAT não pode criar associações adicionais, cortando efetivamente os clientes da Internet.