2009-04-28 6 views
2

Ich möchte einige Ports können wiederverwendet werden, und deshalb bin ich mit setsockopt auf meine Steckdosen, mit dem folgenden Code:Ist Windows setsockopt gebrochen?

sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 

jedoch das funktioniert nicht wirklich. Ich bekomme auch keinen Bindefehler, aber der Server-Socket antwortet gerade nicht (es scheint zu starten, aber wenn ich versuche, eine Verbindung herzustellen, kommt es nicht in die Auswahlschleife). Dieses Verhalten tritt auf, wenn das Skript unerwartet beendet wird und wenn ich den Port ändere, den der Server überwacht, funktioniert alles wieder. Kannst du einen Rat geben?

EDIT: Ich habe den Sockel in Socke umbenannt. Es war nur ein Name, den ich für dieses Code-Snippet ausgewählt habe.

+0

sollten Sie setsockopt auf Ihrem Sockel aufrufen, was Sie nicht zu tun scheinen. Bist du dir sicher, dass du kein Shadowing eingebaut hast? – SilentGhost

+0

Es ist nur ein Name, den ich für dieses Snippet gewählt habe. – Geo

+0

Diese Frage sollte wahrscheinlich umbenannt werden in "Ist Windows SO_REUSEADDR defekt?" – paleozogt

Antwort

1

setsockopt ist eine Methode eines Socket-Objekts. Modul socket hat kein setsockopt Attribut.

+0

Ich nannte mein Socket-Objekt in diesem Beispiel Socket. In meinem Code ist der Name "listening_sock" – Geo