又是我从Running Python server forever。我把我的文件上传到服务器,但是我得到了:
Traceback (most recent call last):
File "./application", line 42, in <module>
s.bind((TCP_IP, TCP_PORT))
File "<string>", line 1, in bind
socket.error: [Errno 13] Permission denied
代码如下,供您参考:
...
TCP_IP = ''
TCP_PORT = 9090
BUFFER_SIZE = 256
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
while True:
conn, addr = s.accept()
ClientThread(conn, addr).start()
当套接字绑定到端口9090(或任何其他端口)时,它只返回此异常。我不需要是root
,因为port > 1024
。
我该换什么?是TCP/IP还是TCP/U端口有问题?
~机会
尝试使用
'0.0.0.0
'作为绑定地址。在Linux中,这意味着所有接口。并确保已禁用SELinux。
我建议进一步隔离这个问题,这意味着您希望使用“应该也能工作”但不是您的代码的东西来重现这个问题。
例如,尝试一个屏蔽的(已知工作的)HTTP脚本服务器,并观察如果它也失败了,那么这个问题与您发布的Python代码无关。这会让你走上正轨。。。权限。
仅供参考-在EC2上,我不认为您以根用户身份登录——我的EC2不支持根用户(它是Ubuntu)。相反,您“sudo”在以您的身份登录时运行该命令。系统不会提示我输入sudo密码(尽管在我之前可能已经有人配置了这个密码,方法是将NOPASSWORD=ALL添加到/etc/sudoers用户或组中)。
我对EC2的了解是,你在操作系统本身和amazonec2控制面板上都有防火墙和权限,你很容易遇到权限问题,浪费时间找错地方。
无论如何,请确认它是权限而不是您的Python代码,然后将此问题带到EC2论坛以获得最佳结果。
将主机设置为“无”,以便它正确绑定到所有适配器接口。
引用:http://docs.python.org/library/socket.html
相关问题 更多 >
编程相关推荐