Печать на консоль в Try-Catch с ресурсами - PullRequest
0 голосов
/ 31 октября 2019

Я хочу, чтобы сервер печатал на консоли, когда проигрыватель подключается через сокеты. Однако моя IDE лает на меня за попытку использовать System.out.println ("P1 Connected") внутри try-catch с ресурсами.

Я изучил проблему и обнаружил, что вызовы внутри try-catchулов с ресурсами должен реализовать закрытый. Хотя это имеет смысл, это блокировка вызовов, и я не могу найти другого способа обеспечить печать сразу после подключения игрока.

Я мог бы разбить его на два try-catch с ресурсами, однако я потерялссылка на клиентские сокеты для P1 и P2. Насколько мне известно, все мои операции с этими сокетами должны происходить в {} после try-catch, так как в противном случае они закрыты и из-за области действия к ним больше нельзя получить доступ.

//Setup the server socket for client one
        try (

                ServerSocket serverSocket = new ServerSocket(Integer.parseInt(args[1]));
                Socket clientOne = serverSocket.accept();
                BufferedReader clientOneIn = new BufferedReader(new InputStreamReader(clientOne.getInputStream()));
                PrintWriter clientOneOut = new PrintWriter(clientOne.getOutputStream(), true);
                System.out.println("Player one connected!");

                Socket clientTwo = serverSocket.accept();
                BufferedReader clientTwoIn = new BufferedReader(new InputStreamReader(clientTwo.getInputStream()));
                PrintWriter clientTwoOut = new PrintWriter(clientTwo.getOutputStream(), true);
        ) {

        } catch (IOException e) {
            e.printStackTrace();
        }
...