首页 > 解决方案 > 在 Try-Catch with Resources 中打印到控制台

问题描述

当玩家通过套接字连接时,我希望服务器打印到控制台。但是,我的 IDE 对我大吼大叫,因为我试图在 try-catch 中使用 System.out.println("P1 Connected") 和资源。

我调查了这个问题,发现 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();
        }

标签: javatry-catch

解决方案


推荐阅读