Compartir a través de


Se devuelve el error 10013 (WSAEACCES) cuando se produce un error en un segundo enlace a un puerto excluido en Windows

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:

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.