Udostępnij za pośrednictwem


Błąd 10013 (WSAEACCES) jest zwracany, gdy drugie powiązanie z wykluczonym portem w systemie Windows kończy się niepowodzeniem

Ten artykuł zawiera pomoc w rozwiązaniu problemu polegającego na tym, że nie można ponownie powiązać wykluczonego portu, mimo że jest ustawiona opcja SO_REUSEADDR.

Oryginalny numer KB: 3039044

Symptomy

Załóżmy, że port został wyklucz, uruchamiając następujące polecenie na komputerze z systemem Windows Server 2012 R2, Windows Server 2012 lub Windows Server 2008 R2:

netsh int ipv4 add excludedportrange protocol = tcp startport = Integer numberofports = 1

Ponadto załóżmy, że powiążesz gniazdo SO_REUSEADDR z określonym portem TCP na komputerze. W takiej sytuacji, gdy spróbujesz ponownie powiązać gniazdo SO_REUSEADDR z portem TCP, powiązanie zakończy się niepowodzeniem i zostanie wyświetlony błąd "WSAEACCES (10013)".

W związku z tym, jeśli używasz aplikacji, która wywołuje te dwa powiązania w systemie Windows Server 2012 R2, Windows Server 2012 lub Windows Server 2008 R2, nie może działać poprawnie.

Uwaga 16.

  • Domyślnie system Windows Server 2008 R2 nie może używać netsh polecenia do wykluczania portów. Jednak po zastosowaniu poprawki 2665809 system operacyjny obsługuje tę funkcję.
  • Ten problem nie występuje w systemie Windows Server 2008 lub Windows Server 2003.

Przyczyna

Ten problem występuje z powodu problemu w sterowniku tcpip.sys. W szczególności flaga REUSE została zastąpiona przez flagę RESERVED, gdy sterownik tcpip.sys wiąże wykluczony port.

Rozwiązanie

Aby obejść ten problem, użyj jednej z następujących metod:

Stan

Firma Microsoft potwierdziła, że jest to usterka występująca w produktach firmy Microsoft wymienionych w części "Ma zastosowanie do:".

Więcej informacji

Zobacz funkcję setsockopt, aby dowiedzieć się więcej o SO_REUSEADDR opcji.