我正在尝试使用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&gt; python TestServer.py 追溯(最近的呼叫最后):
文件“TestServer.py”,第19行,in 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上使用它?
[编辑于2010年5月5日@ 2344 PDT]此answer解释说,该错误是由访问低于1024的端口时需要提升/超级用户权限引起的。我将尝试使用更高的端口号,看看是否有效。但是,我仍然想知道为什么我的本地管理员帐户无法访问端口80.
答案 0 :(得分:29)
我刚遇到同样的问题,我的系统是Win7。只需在终端上使用命令,如:netstat -na | findstr port,您将看到该端口已被使用。因此,如果您想在没有此消息的情况下启动服务器,则可以更改未使用的其他端口。
答案 1 :(得分:18)
在Windows Vista / 7上,使用UAC,管理员帐户默认以非特权模式运行程序。
程序必须在以管理员身份运行之前提示管理员访问,并且必须使用不熟悉的UAC对话框。由于Python脚本不能直接执行,因此没有“以管理员身份运行”上下文菜单选项。
可以使用ctypes.windll.shell32.IsUserAnAdmin()
来检测脚本是否具有管理员访问权限,并使用python.exe上的'runas'动词ShellExecuteEx
,并使用sys.argv [0]作为参数来提示如果需要,可以使用UAC对话框。
答案 2 :(得分:11)
请参阅http://www.symantec.com/connect/articles/we-are-unable-send-your-email-caused-mcafee
答案 3 :(得分:4)
socket.error:[Errno 10013]试图以其访问权限禁止的方式访问套接字
flask :
表示您尝试绑定的端口已被其他服务或进程使用: 在我在Eclipse / windows上开发的代码中得到了一个暗示:
if __name__ == "__main__":
# Check the System Type before to decide to bind
# If the system is a Linux machine -:)
if platform.system() == "Linux":
app.run(host='0.0.0.0',port=5000, debug=True)
# If the system is a windows /!\ Change /!\ the /!\ Port
elif platform.system() == "Windows":
app.run(host='0.0.0.0',port=50000, debug=True)
答案 4 :(得分:2)
我不得不在Windows防火墙中允许.. \ python27 \ python.exe。我不需要在WinXP或Win8上执行此操作。
答案 5 :(得分:2)
尝试在其他端口上运行服务器。为我工作:
python manage.py runserver 127.0.0.1:7000
说明:
如Django文档所述:
如果以具有普通特权的用户身份运行此脚本(推荐),则您可能无权启动端口号较低的端口。低端口号为超级用户(根)保留。
此服务器使用WSGI_APPLICATION设置指定的WSGI应用程序对象。
请勿在生产设置中使用此服务器。它尚未经过安全审核或性能测试。 (这就是要保持的方式。我们的工作是制作Web框架,而不是Web服务器,因此,改进此服务器以使其能够处理生产环境不在Django的范围之内。)
答案 6 :(得分:2)
您的本地端口正在被其他应用使用。我遇到了同样的问题! 您可以尝试执行以下步骤:
转到命令行并以管理员身份运行!
类型:
fun onrefresh(List<>lists){
this.yourlist=lists
notifyDataSetChanged()
}
类型:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode==yourcode){
if(resultCode.RESULT_OK){
val data=data.get // you data from here
// add this into you list data
//than set into adapter
adapter.onrefresh(yourlist)
}
}
}
=>成功:PID 4032的过程已终止。
注意:PID 4032列出了我的5000个本地端口。您应该给自己!
答案 7 :(得分:1)
只需在高于1024的端口上运行,以下任何内容均享有特权,与Linux相同,我在不使用任何UAC私有升级的情况下使用5000作为胜利。
答案 8 :(得分:1)
我在Windows 10上通过编辑出站防火墙规则解决了这一问题。 右键单击规则“阻止SQL Server实例MSSQLSERVER中的R本地用户帐户的网络访问”上的“允许”
Windows 10防火墙的屏幕截图-出站规则-这就是阻止我的实例的原因
答案 9 :(得分:0)
似乎端口80已在使用中。尝试使用系统中任何其他应用程序未使用的其他端口。
答案 10 :(得分:0)
主要问题是另一个应用程序使用的端口号。因此,您可以将端口号更改为未使用的端口号,如下所示。
在Windows中,您可以在Windows任务管理器中查看不同应用程序使用的已使用端口号。
python manage.py runserver 127.0.0.1:portnumber
Ex: python manage.py runserver 127.0.0.1:8080
答案 11 :(得分:0)
在我的情况下,我刚刚发现卡巴斯基Internet Security 2019防火墙阻止了python的网络访问。禁用防火墙正常工作。或者为python应用程序添加例外规则,并使用* .py扩展所有文件。
答案 12 :(得分:-1)
在防病毒中禁用访问保护,
我最后也遇到了同样的问题,发现防病毒日志如下。
受访问保护规则NT AUTHORITY \ SYSTEM C:\ WINDOWS \ SYSTEM32 \ SVCHOST.EXE C:\ PROGRAM FILES(X86)\ MCAFEE \ VIRUSSCAN ENTERPRISE \ MCCONSOL.EXE的限制公用标准保护:防止McAfee进程终止:终止 被端口阻止规则C:\ USERS \ username \ APPDATA \ LOCAL \ PROGRAMS \ PYTHON \ PYTHON37-32 \ PYTHON.EXE阻止防病毒标准保护:防止大量邮件蠕虫发送邮件
答案 13 :(得分:-3)
我在Python中找到了解决这个问题的解决方案。
转到c:\ python27 \目录并将pyt.exe和tab选中以进行比较,然后选择admin权限选项并应用更改。现在发出它允许创建套接字连接的命令。