我尝试使用 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/