Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona ayuda para resolver un problema por el que no se puede enlazar de nuevo un puerto excluido aunque se establezca la opción SO_REUSEADDR.
Número de KB original: 3039044
Síntomas
Supongamos que excluye un puerto ejecutando el siguiente comando en un equipo que ejecuta Windows Server 2012 R2, Windows Server 2012 o Windows Server 2008 R2:
netsh int ipv4 add excludedportrange protocol = tcp startport = Integer numberofports = 1
Además, supongamos que enlaza el socket SO_REUSEADDR a un puerto TCP específico en el equipo. En esta situación, al intentar enlazar el socket SO_REUSEADDR al puerto TCP de nuevo, se produce un error en el enlace y se recibe el error "WSAEACCES (10013)".
Por lo tanto, si usa una aplicación que llama a los dos enlaces en Windows Server 2012 R2, Windows Server 2012 o Windows Server 2008 R2, no puede funcionar correctamente.
Nota:
- De forma predeterminada, Windows Server 2008 R2 no puede usar el
netsh
comando para excluir puertos. Sin embargo, después de aplicar 2665809 de revisión, el sistema operativo admite esta función. - Este problema no se produce en Windows Server 2008 o Windows Server 2003.
Causa
Este problema se produce debido a un problema en el controlador tcpip.sys. En concreto, la marca REUSE se sobrescribe mediante la marca RESERVED cuando el controlador tcpip.sys enlaza un puerto excluido.
Solución alternativa
Para resolver este problema, use uno de los métodos siguientes:
- Use un puerto que no esté incluido en el intervalo de puertos dinámicos predeterminado (de 49 152 a 65 535) y no especifique el puerto como un puerto excluido ejecutando el
netsh
comando . - Use las funciones CreatePersistentTcpPortReservation y LookupPersistentTcpPortReservation para reservar un puerto.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Consulte la función setsockopt para obtener más información sobre la opción SO_REUSEADDR.