Java 将套接字程序从pc移植到mac,并在创建套接字时获得拒绝的权限

Java 将套接字程序从pc移植到mac,并在创建套接字时获得拒绝的权限,java,macos,sockets,Java,Macos,Sockets,我正在尝试将我的项目从pc移植到mac。 执行时 server = new ServerSocket(80); 抛出一个异常,表示权限被拒绝。我以管理员身份登录。在除Windows以外的所有主要操作系统上,除非您是root用户,否则无法绑定到端口80。不仅仅是管理员用户-root 在Mac上,如果启用了内置web服务器Apache,则端口80也可能已经在使用中。使用该端口可能有限制。尝试使用不常见的端口号运行它 还可以尝试此操作以检查哪些端口可供正确使用: ServerSocket serve

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

server = new ServerSocket(80);

抛出一个异常,表示权限被拒绝。我以管理员身份登录。

在除Windows以外的所有主要操作系统上,除非您是root用户,否则无法绑定到端口80。不仅仅是管理员用户-root


在Mac上,如果启用了内置web服务器Apache,则端口80也可能已经在使用中。

使用该端口可能有限制。尝试使用不常见的端口号运行它

还可以尝试此操作以检查哪些端口可供正确使用:

ServerSocket serversocket = null;

    try {
        serversocket = new ServerSocket(i);
        serversocket.close();
        System.out.println(i + " Available");
    } catch (BindException ex) {
        System.out.println(i + " Unavailable");
    }
} 

“权限被拒绝”消息意味着您的用户没有将套接字绑定到该端口所需的权限。在基于Unix的操作系统上,低于1024的端口只能由根用户绑定。可能类似的限制也适用于Windows-您的Windows用户是否具有管理员权限


如果您的用户确实拥有权限,并且有另一个服务在端口80上运行,例如Apache,则您会收到一条地址已在使用的消息。

您能否发布引发异常的整个堆栈跟踪?您是否使用sudo启动JVM?以管理员身份登录,您的意思是以root用户身份登录还是以具有管理员权限的用户身份登录?正在使用的端口不会导致“权限被拒绝”。您好,谢谢您回答我的问题。好的,我可以使用另一个端口。愚蠢的问题,如果我在根用户帐户下构建程序。我是一个电脑爱好者,刚刚开始使用MAC电脑,所以在Ted之前我不必处理这些问题