Так что я делаю чат-сервер в Java, чтобы отвлечься от зависимости от Hamachi для хостинга и общения на моем сервере Minecraft. Он отлично работает, за исключением одного: я не могу понять, как жизнь меня как добавить команды на сервер. Мой главный цикл выглядит следующим образом:Java-чат-сервер с командами
/*Executed in constructor*/
public void listen(int port) throws IOException {
//Initialize the ServerSocket
ss = new ServerSocket(port);
System.out.println("Listening on " + InetAddress.getLocalHost() + ":" + ss.getLocalPort());
running = true;
//Keep accepting connections
while (running) {
//Get the incoming connection
Socket s = ss.accept();
System.out.println("Connection from: " + getFullIP(s));
//Create a DataOutputStream for writing data to the other side
DataOutputStream dataOut = new DataOutputStream(s.getOutputStream());
//Save this stream so I don't have to make it again
outputStreams.put(s, dataOut);
//Create a new thread for this connection
new ServerThread(this, s);
if (!running) {
stop();
}
Scanner cmdScanner = new Scanner(System.in);
String command = cmdScanner.next();
processCommand(command);
}
}
Результатом этого кода является то, что я не могу набрать команду до тех пор, пока клиент не подключается к серверу (из-за ss.accept()
). Пока я не выполню команду, клиент не может подключиться (cmdScanner.next()
). Как мне обойти это?
Спасибо! Можете ли вы дать мне схему этого процесса или указать мне в хорошем направлении? – mattbdean
О! Я понимаю что ты имеешь ввиду. Спасибо огромное! – mattbdean