Я пытаюсь создать собственный стек 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.py Traceback (последний вызов последним):
Файл «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, в привязкеsocket.error: [Errno 10013] Была сделана попытка получить доступ к сокету способом, запрещенным его разрешениями на доступ
Как именно заставить это работать в Windows 7?
[Изменить от 05.05.2010 @ 2344 PDT] В этом ответе объясняется, что ошибка вызвано необходимостью повышенных прав / привилегий суперпользователя при доступе к портам ниже 1024. Я попытаюсь использовать более высокий номер порта, чтобы посмотреть, работает ли это. Однако я все еще хотел бы знать, почему моя учетная запись локального администратора не может получить доступ к порту 80.
telnet 127.0.0.1 80
быстро покажет, привязан ли порт 80. - person msw   schedule 06.05.2010