Fehler 10013 (WSAEACCES) wird zurückgegeben, wenn eine zweite Bindung an einen ausgeschlossenen Port in Windows fehlschlägt

Dieser Artikel bietet Hilfe bei der Behebung eines Problems, bei dem Sie einen ausgeschlossenen Port nicht erneut binden können, obwohl die Option SO_REUSEADDR festgelegt ist.

Gilt für: Windows Server 2012 R2
Ursprüngliche KB-Nummer: 3039044

Symptome

Angenommen, Sie schließen einen Port aus, indem Sie den folgenden Befehl auf einem Computer ausführen, auf dem Windows Server 2012 R2, Windows Server 2012 oder Windows Server 2008 R2 ausgeführt wird:

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

Nehmen Sie außerdem an, dass Sie den SO_REUSEADDR Socket an einen bestimmten TCP-Port auf dem Computer binden. Wenn Sie in diesem Fall erneut versuchen, den SO_REUSEADDR Socket an den TCP-Port zu binden, schlägt die Bindung fehl, und Sie erhalten den Fehler "WSAEACCES (10013)".

Wenn Sie eine Anwendung verwenden, die die beiden Bindungen in Windows Server 2012 R2, Windows Server 2012 oder Windows Server 2008 R2 aufruft, kann sie daher nicht ordnungsgemäß funktionieren.

Hinweis

  • Standardmäßig kann Windows Server 2008 R2 den netsh Befehl nicht verwenden, um Ports auszuschließen. Nachdem Sie jedoch Hotfix 2665809 angewendet haben, unterstützt das Betriebssystem diese Funktion.
  • Dieses Problem tritt in Windows Server 2008 oder Windows Server 2003 nicht auf.

Ursache

Dieses Problem tritt aufgrund eines Problems im tcpip.sys Treiber auf. Insbesondere wurde das REUSE-Flag durch das RESERVED-Flag überschrieben, wenn der tcpip.sys Treiber einen ausgeschlossenen Port bindet.

Problemumgehung

Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:

  • Verwenden Sie einen Port, der nicht im dynamischen Standardportbereich enthalten ist (von 49.152 bis 65.535), und geben Sie den Port nicht als ausgeschlossenen Port an, indem Sie den netsh Befehl ausführen.
  • Verwenden Sie die Funktionen CreatePersistentTcpPortReservation und LookupPersistentTcpPortReservation , um einen Port zu reservieren.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Weitere Informationen zur Option SO_REUSEADDR finden Sie unter der setockopt-Funktion .