java.net.BindException : Permission denied when creating a ServerSocket on Mac OSX

标签 java macos sockets

我尝试使用 eclipse 在 mac 中运行 Java 套接字,但它不起作用。我收到了这个错误:

Exception in thread "main" java.net.BindException: Permission denied

    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.socketBind(PlainSocketImpl.java:521)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:414)
    at java.net.ServerSocket.bind(ServerSocket.java:326)
    at java.net.ServerSocket.<init>(ServerSocket.java:192)
    at java.net.ServerSocket.<init>(ServerSocket.java:104)
    at server.MessageServer.main(MessageServer.java:11)

我怎样才能让它运行?

package server; //ChatServer 
import java.io.*; 
import java.net.*; 

public class MessageServer { 

public static void main (String args[]) throws IOException { 
    int port = 100; 
    ServerSocket server = new ServerSocket (port); 
    System.out.println("Server is started!"); 

    while (true) { 
        Socket client = server.accept (); 
        System.out.println ("Accepted from " + client.getInetAddress ()); 
        MessageHandler handler = new MessageHandler (client); 
        handler.start(); 
        } 
    } 
}

最佳答案

您无法打开低于 1024 的端口,如果您没有 root 权限,并且从您在评论中发布的代码来看,您似乎正在尝试打开端口 100,这证实了我的理论。

如果您在非 root 用户下运行代码,则需要使用高于 1024 的端口。

关于java.net.BindException : Permission denied when creating a ServerSocket on Mac OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25544849/

相关文章:

java - 在crxde中自动安装bundle的问题

java - 对于可以在线和离线使用的应用程序,分离层的好策略是什么?

eclipse - 在Mac Lion上运行Eclipse Juno 64位的问题

windows - 启动应用程序(如果已安装)或重定向以下载 - Windows

php - 越过服务器,如何读取直到当前传输结束?

java - 套接字无法接收数据

java - 使用 PhantomJS 和 GhostDriver 从 WebDriver 或 RemoteWebDriver 进行网络监控

java - 跨 2 个子网的 JGroup 集群

c - 如何从外部音频接口(interface)访问具有核心音频的各个 channel

c - 运行无限套接字打开和关闭时打开的文件太多