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) - это не плохой код? На производительность влиять не будет? Память потребляет, питание на ноутбуке ест? Или есть другой способ?
Ответ
Не вижу ничего особенно плохого в вашем коде.
Написание собственного велосипедного сервера — шаг, через который стоит пройти.
Из минусов — выделение потока на каждый клиент. Это потенциально приведёт к невозможности обработки, скажем, 10000 клиентов одновременно. В братском .NET проблема решается при помощи паттерна async/await, в Java, судя по всему, вам придётся поддерживать состояние работы с каждым из клиентов вручную.
Затем, если ваш сервер на деле использует более высокоуровневый протокол (HTTP?) имеет смысл воспользоваться готовым клиентом, правильный разбор высокоуровневых сложных протоколов — та ещё задача. Хотя да, этот клиент будет делать по сути примерно то же самое.
Комментариев нет:
Отправить комментарий