Ich versuche, einen benutzerdefinierten TCP-Stack mit Python 2.6.5 unter Windows 7 zu erstellen, um eine gültige http-Seite zu liefern Anfragen an Port 80 lokal. Aber ich bin in einen Haken geraten mit dem, was wie Windows 7 Sicherheit scheint. Dieser Code funktionierte unter Vista.socket.error: [Errno 10013] Es wurde versucht, auf einen Socket zuzugreifen, der durch seine Zugriffsberechtigungen verboten ist.
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 (most recent call last):
File "TestServer.py", line 19, in server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) File "C:\Python26\lib\SocketServer.py", line 400, in init self.server_bind() File "C:\Python26\lib\SocketServer.py", line 411, in server_bind self.socket.bind(self.server_address) File "", line 1, in bindsocket.error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions
Wie genau kann ich das auf Windows 7 zu arbeiten?
[Bearbeiten am 05.05.2010 @ 2344 PDT] Dieser answer erklärt, dass der Fehler durch die Notwendigkeit für erhöhte/Superuser-Berechtigungen beim Zugriff auf Ports niedriger als 1024 verursacht wird. Ich werde versuchen, eine höhere Portnummer zu verwenden um zu sehen, ob das funktioniert. Ich möchte jedoch immer noch wissen, warum mein lokaler Administrator-Account nicht auf Port 80 zugreifen kann.
Ihrem lokales Admin-Konto kann zu binden, die Lage sein, den Port 80 nicht, weil es bereits ein anderer Prozess ist (Server) gebunden zu ihm. 'telnet 127.0.0.1 80' zeigt Ihnen schnell, ob Port 80 bereits gebunden ist. – msw
@msw Das sollte einen anderen Fehler geben. –
@ msw/everywhere notieren, dass [ein Telnet-Client standardmäßig nicht auf Win7 installiert ist.] (Http://technet.microsoft.com/en-us/library/cc771275%28v=ws.10%29.aspx) – pythonlarry