java.net.BindException:在Mac OSX上创建ServerSocket时拒绝权限

Kev*_*ear 25 java sockets macos

我尝试使用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)
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它运行?

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(); 
        } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

car*_*ing 57

您无法打开1024以下的端口,如果您没有root权限,并且您在评论中发布的代码中,您似乎正在尝试打开100确认我的理论的端口.

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

  • 是否可以使用root权限运行它? (2认同)

Aar*_*lla 22

基于Unix的系统将端口<1024声明为"特权",并且您需要管理员权限才能启动服务器.

要进行测试,请使用端口号> = 1024.

在生产中部署服务器时,请使用管理员权限运行它.