Как я могу выйти из цикла while?Как остановить сервер в многопоточном приложении клиент/сервер?
Переменная «running» установлена по умолчанию TRUE, и, получив «shutdown», значение должно быть изменено на FALSE и выйти из Thread (run-method). Таким образом, сервер закрывается после цикла while.
ExecutorService executor = Executors.newFixedThreadPool(3);
while (running) {
Socket socket = server.accept();
executor.execute(new Handler(socket,server));
}
executor.shutdown();
server.close();
Прогон-метод:
while(Server.getRunning()){
System.out.println("..Wait for Input!");
String inline = input.readLine();
String[] a = inline.split(" ");
int result;
if (a[0].equals("shutdown")){
Server.setRunning(false);
Protocol.status(client, "shutdown");
return;
}
}
Просьба представить раздел, где вы определяете и управляющая переменная 'running' –
Также обратите внимание на следующее:' Socket accept() ': ' Прослушивает подключение к этому сокету и acce это он. Метод блокируется до тех пор, пока не будет создано соединение. ' –
running - это глобальная статическая переменная в моем Server.class и для управления переменной я использую метод getter/setter. когда клиент поставляет «shutdown», клиент закрывается нормально, но сервер реагирует только при подключении нового клиента из-за server.accept() в while-loop – SteveOhio