【问题标题】:Java - making different classes print to client instead of System.outJava - 使不同的类打印到客户端而不是 System.out
【发布时间】:2013-03-15 18:13:05
【问题描述】:

我正在将一个正常运行的单人游戏转换为跨网络运行。

这是一个在终端上运行的简单游戏。它只是与程序一起输入/输出文本。

它有几个类,大部分打印到 System.out 或 System.err

但我想将这些消息发送到客户端,而不是在服务器系统上打印它们。

当套接字 i/o 是在一个类的主线程中进行时,我该怎么做?

基本上我如何从其他类访问它?

    public static void main(String[] args) throws IOException {

    ServerSocket serverSocket = null;
    try {
        serverSocket = new ServerSocket(45444);
    } catch (IOException e) {
        System.err.println("Could not listen on port: 45444.");
        System.exit(1);
    }

    Socket clientSocket = null;
    try {
        clientSocket = serverSocket.accept();
    } catch (IOException e) {
        System.err.println("Accept failed.");
        System.exit(1);
    }

    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
    BufferedReader in = new BufferedReader(new InputStreamReader(
            clientSocket.getInputStream()));
    String inputLine;
    String outputLine;

【问题讨论】:

  • 基本上,你应该启动一个新线程来处理clientSocket。您可以将 clientSocket 作为参数(构造函数参数或只是一个 setter 方法)传递给其他类。

标签: java class networking io


【解决方案1】:

您可以使用 System.setOut()System.setErr() 将 STDOUT 和 STDERR 重定向到任意输出流(在您的情况下是网络 I/O 流)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2016-03-04
    • 2014-08-04
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多