socket.error: [Errno 10013] Es wurde versucht, auf einen Socket auf eine Weise zuzugreifen, die durch seine Zugriffsberechtigungen verboten ist.

Ich versuche, mit Python 2.6.5 unter Windows 7 einen benutzerdefinierten TCP-Stapel zu erstellen, um gültige http-Seitenanforderungen auf Port 80 lokal zu verarbeiten. Aber ich bin auf einen Haken bei der anscheinend verschärften Sicherheit von Windows 7 gestoßen. Dieser Code hat unter Vista funktioniert.

Hier ist mein Beispielcode:

import SocketServer
import struct

class MyTCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        headerText = """HTTP/1.0 200 OK
                        Date: Fri, 31 Dec 1999 23:59:59 GMT
                        Content-Type: text/html
                        Content-Length: 1354"""
        bodyText = "<html><body>some page</body></html>"
        self.request.send(headerText + "\n" + bodyText)

if __name__ == "__main__":
    HOST, PORT = "localhost", 80
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()

C: \ python> python TestServer.py Traceback (letzter Anruf zuletzt):
Datei "TestServer.py", Zeile 19, in server = SocketServer.TCPServer ((HOST, PORT), MyTCPHandler) Datei "C: \ Python26 \ lib \ SocketServer.py", Zeile 400, indri self.server_bind () Datei "C: \ Python26 \ lib \ SocketServer.py", Zeile 411, in server_bind self.socket.bind (self.server_address) Datei "", Zeile 1, in bind

socket.error: [Errno 10013] Es wurde versucht, auf einen Socket auf eine Weise zuzugreifen, die durch seine Zugriffsberechtigungen verboten ist.

Wie genau funktioniert das unter Windows 7?

[Bearbeiten am 05.05.2010 @ 2344 PDT] DieseAntworte erklärt, dass der Fehler dadurch verursacht wird, dass beim Zugriff auf Ports unter 1024 erhöhte / Superuser-Berechtigungen erforderlich sind. Ich werde versuchen, eine höhere Portnummer zu verwenden, um festzustellen, ob dies funktioniert. Ich möchte jedoch weiterhin wissen, warum mein lokales Administratorkonto nicht auf Port 80 zugreifen kann.

Antworten auf die Frage(20)

Ihre Antwort auf die Frage