#java
public static void main(String[] args) throws IOException { playerses = new ArrayList<>(); serverSocket = new ServerSocket(7475); while (true) { Socket socket = serverSocket.accept(); new Thread(new Runnable() { @Override public void run() { try { while (true) { String asd = new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine(); System.out.println(asd); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } } Нужно сделать так, чтобы сервер после того, как к нему подключится клиент по сокету, начинал его слушать. while(true) - это не плохой код? На производительность влиять не будет? Память потребляет, питание на ноутбуке ест? Или есть другой способ?
Ответы
Ответ 1
Не вижу ничего особенно плохого в вашем коде. Написание собственного велосипедного сервера — шаг, через который стоит пройти. Из минусов — выделение потока на каждый клиент. Это потенциально приведёт к невозможности обработки, скажем, 10000 клиентов одновременно. В братском .NET проблема решается при помощи паттерна async/await, в Java, судя по всему, вам придётся поддерживать состояние работы с каждым из клиентов вручную. Затем, если ваш сервер на деле использует более высокоуровневый протокол (HTTP?) имеет смысл воспользоваться готовым клиентом, правильный разбор высокоуровневых сложных протоколов — та ещё задача. Хотя да, этот клиент будет делать по сути примерно то же самое.
Комментариев нет:
Отправить комментарий