Я пытаюсь создать собственный стек TCP, используя Python 2.6.5 в Windows 7, чтобы обслуживать действительные запросы http-страниц на порту 80 локально. Но я столкнулся с проблемой, когда Windows 7 ужесточила безопасность. Этот код работал на Vista.
Вот мой пример кода:
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.pyTraceback (последний последний звонок):
Файл "TestServer.py", строка 19, в server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) Файл "C:\Python26\Lib\SocketServer.py", строка 400, в init self.server_bind() Файл "C:\Python26\lib\SocketServer.py", строка 411, в server_bind self.socket.bind(self.server_address) Файл "", строка 1, в bindsocket.error: [Errno 10013] Попытка было сделано для доступа к сокету таким образом запрещено его разрешениями доступа
Как я могу заставить это работать на Windows 7?
[Редактировать в 5/5/2010 @2344 PDT] Этот ответ объясняет, что ошибка вызвана необходимостью привилегий повышенного/суперпользователя при доступе к портам ниже, чем 1024. Я попытаюсь использовать более высокий номер порта, чтобы увидеть, работает ли это. Тем не менее, мне все же хотелось бы знать, почему моя локальная учетная запись администратора не может получить доступ к порту 80.