3 Stimmen

Was verursacht den TcpListener Socket Fehler 10013?

Ich erhalte die Fehlermeldung 10013. msdn sagt, es sei ein "permission denied"-Fehler.

An attempt was made to access a socket in a way forbidden by its access permissions

Meine Anwendung lief einwandfrei. Ich habe dann eine Codeänderung vorgenommen und sie neu gestartet. Ich bekam diesen Fehler. Ich habe vermutet, dass ich Ports wiederverwenden muss, also habe ich dies eingegeben und hatte immer noch kein Glück

server.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

Wie kann ich diesen Fehler beheben?

-edit-

Ich habe bemerkt, dass es funktioniert, wenn ich FireFox (mit seinen vielen Tabs) schließe und das Programm ausführe... Vielleicht hat es etwas mit einer Verbindung zu tun? (ich habe Ajax mit dem Programm kommunizieren lassen). Ich frage mich, woran das liegt.

10voto

Stephen Cleary Punkte 402664

Dieser Fehlercode wird durch den Versuch verursacht, die bind an einen Anschluss, der ausschließlich von einem anderen Prozess verwendet wird. Die häufigste Ursache ist das versehentliche zweimalige Starten desselben Dienstes.

Im Zweifelsfall ist eine schnelle Überprüfung der netstat -a TCPView sollte aufzeigen, welcher Prozess den Port geöffnet hat.

0voto

Malcolm Shore Punkte 1

In meinem Fall war die Lösung für den Socket-Fehler #10013 Zugriff verweigert bei einer Delphi-Anwendung beim Ausführen der ausführbaren Datei "Als Administrator ausführen". Für diejenigen unter Ihnen, die normalerweise außerhalb des lokalen Administrationsbereichs arbeiten, kann dies eine Lösung sein.

0voto

krul Punkte 2201

Eine andere Möglichkeit, die diesen Fehler (WCF verwendet) ergibt, ist Szenario, wo Sie zwei Endpunkte auf dem gleichen Server mit verschiedenen Protokollen (http & net.tcp zum Beispiel) aber gleichen Port, etwas wie dieses definiert haben:

<service name="yourService">
<endpoint address="http://localhost:2112/ys" binding="basicHttpBinding" name="basicHttpEndPoint"
  contract="zza.Services.IzzaService" />
<endpoint address="net.tcp://localhost:**2112**/" binding="netTcpBinding"
  name="netTcpEndPoint" contract="IyourService" />
<host>
  <baseAddresses>
    <add baseAddress="http://localhost:**2112**" />
  </baseAddresses>
</host>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X