Sto provando a creare uno stack TCP personalizzato utilizzando Python 2.6.5 su Windows 7 per servire una pagina http valida richieste sulla porta 80 localmente. Ma, ho incontrato un ostacolo con quello che sembra Windows 7 ha rafforzato la sicurezza. Questo codice ha funzionato su Vista.socket.error: [Errno 10013] Si è tentato di accedere a un socket in un modo vietato dalle sue autorizzazioni di accesso
Ecco il mio codice di esempio:
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
Esattamente come faccio a farlo funzionare su Windows 7?
[Modifica in 5/5/2010 @ 2344 PDT] Questo answer spiega che l'errore è causato dalla necessità di privilegi elevati/superutente quando si accede a porte inferiori a 1024. Ho intenzione di provare a utilizzare un numero di porta più alto per vedere se funziona. Tuttavia, vorrei ancora sapere perché il mio account amministratore locale non può accedere alla porta 80.
tuo account di amministratore locale potrebbe non essere in grado di legarsi alla porta 80 perché c'è già un altro processo (server) rilegato ad esso. 'telnet 127.0.0.1 80' mostrerà rapidamente se la porta 80 è già associata. – msw
@msw Questo dovrebbe dare un errore diverso. –
@ msw/tutti notano che [un client telnet non è installato su Win7 per impostazione predefinita.] (Http://technet.microsoft.com/en-us/library/cc771275%28v=ws.10%29.aspx) – pythonlarry