Não é uma regra absoluta em todos os sistemas UNIX. Alguns possuem extensões que permitem que vários processos se vinculem à mesma combinação de endereço e porta, e o kernel manipulará a distribuição de conexões de entrada para vários ouvintes. A vantagem disso é que seu aplicativo não precisa manipular as conexões em si, e pode se preocupar em lidar com conexões, o que, por sua vez, oferece um mecanismo rápido e muito fácil de implementar para permitir o paralelismo em seu código de rede. / p>
No Linux, a opção de soquete para isso é chamada de SO_REUSEPORT
, e muitos softwares de servidor de alto desempenho amplamente utilizados (incluindo o Apache HTTPD e o nginx) suportam o uso.
O Windows, por usar um clone amplamente direto do código de rede 4.4BSD, tem o mesmo conceito de opções de soquete, e tem suas próprias opções para controlar isso. De acordo com esta resposta do StackOverflow , a opção em questão é chamada SO_REUSEADDR
, e há uma 'anti-opção' equivalente chamada SO_EXCLUSIVEADDRUSE
.
É importante notar que não há nada que impeça que vários programas diferentes usem essa opção e vinculem-se à mesma porta. Isso pode levar a todos os tipos de dores de cabeça ao depurar problemas de rede e também é uma consideração de segurança bastante significativa.