java - 在 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();
}
解决方案
推荐阅读
- php - prestashop 1.7.x 如何在用户创建后显示自定义成功消息
- typescript - 打字稿使用条件类型推断构造函数参数
- docker - Hyperledger 教程中的 Docker 失败
- yii2 - Yii2 - 使用计算字段时 ActiveDataProvider“计数”错误
- r - 重复记录线性回归结果
- javascript - 在页面刷新之前不会加载来自外部 iframe 的内容
- go - 我可以使用 autocert 制定动态主机策略吗?
- python - 相当于torch.gather的张量流
- c++ - 如何将指针转换为未命名的结构指针?
- node.js - Socket.emit 不发送或 socket.on 不接收?