我正在尝试将我的项目从PC移植到mac。 执行时
server = new ServerSocket(80);
抛出一个异常,说Permission denied。我以管理员身份登录。
答案 0 :(得分:4)
在Windows以外的每个主要操作系统上,除非您是root用户,否则无法绑定到端口80。不只是管理员用户 - root。
在Mac上,如果启用了端口80,内置的Web服务器(Apache)也可能正在使用它。
答案 1 :(得分:0)
可能使用该端口有限制。尝试使用不常见的端口号运行它。
还可以尝试检查哪些端口可供正确使用:
ServerSocket serversocket = null;
try {
serversocket = new ServerSocket(i);
serversocket.close();
System.out.println(i + " Available");
} catch (BindException ex) {
System.out.println(i + " Unavailable");
}
}
答案 2 :(得分:0)
“Permission denied”消息表示您的用户没有将套接字绑定到该端口的必要权限。在基于Unix的操作系统上,低于1024的端口只能由root
用户绑定。可能类似的限制也适用于Windows - 您的Windows用户是否具有管理员权限?
如果您的用户确实拥有权限并且在端口80上运行了另一个服务(例如Apache),则会收到“已在使用的地址”消息。