将套接字程序从pc移植到mac并在创建套接字时获得Permission denied

时间:2011-10-27 00:20:45

标签: java macos sockets

我正在尝试将我的项目从PC移植到mac。 执行时

server = new ServerSocket(80);

抛出一个异常,说Permission denied。我以管理员身份登录。

3 个答案:

答案 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),则会收到“已在使用的地址”消息。