【发布时间】:2011-02-16 06:08:12
【问题描述】:
我正在尝试在 Windows 7 上使用 Python 2.6.5 创建自定义 TCP 堆栈,以在本地端口 80 上提供有效的 http 页面请求。但是,我遇到了 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 回溯(最近一次通话最后一次):
文件“TestServer.py”,第 19 行,在 服务器 = 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 上运行?
[Edit on 5/5/2010 @ 2344 PDT] 这个answer 解释说这个错误是由于访问低于 1024 的端口时需要提升/超级用户权限引起的。我将尝试使用更高的端口号码,看看是否有效。但是,我还是想知道为什么我的本地管理员帐号无法访问 80 端口。
【问题讨论】:
-
您的本地管理员帐户可能无法绑定到端口 80,因为已经绑定了另一个进程(服务器)。
telnet 127.0.0.1 80将快速显示端口 80 是否已绑定。 -
@msw 那应该给出一个不同的错误。
标签: python sockets windows-7 compatibility socketserver