【发布时间】:2015-08-13 02:02:12
【问题描述】:
我正在创建一个具有 1 个服务器和多个客户端的程序。所以我想做的是接受任何传入的客户端连接到同一个端口,但是当我这样做时,我得到了异常:java.net.BindException: Address already in use: JVM_Bind。
我还试图跟踪每个单独的客户端,以便我可以向单个客户端发送消息,因此我想在连接后将套接字添加到 ArrayList。
private static ServerSocket socket;
private static ArrayList<Socket> arraySocket = new ArrayList<Socket>();
...
public static void StartServer() {
while(true){
//for (int i = 0; i < Main.nucs.size(); i++) {
try {
socket = new ServerSocket(Constants.PORT_NUMBER);
socket.setReuseAddress(true);
Logger.Log("Waiting for first client");
arraySocket.add(socket.accept());
Logger.Log("New Client: " + arraySocket.get(count).getInetAddress().toString());
(new Thread(new ClientHandler(arraySocket.get(count)))).start();
count++;
} catch (IOException e) {
Logger.Log("Server:IOException:e: " + e);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
【问题讨论】:
-
您不能多次使用同一个端口号。你也不能使用已经在使用的端口号