2013-03-15 51 views
1

我正在轉換工作的單人遊戲以在網絡上運行。Java - 使不同的類打印到客戶端,而不是System.out

這是一個簡單的遊戲,在終端上運行..它只是文本在/文本與程序。

它有幾個班,其中大部分打印到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; 
+0

基本上,你應該開始一個新的線程來處理clientSocket。您可以將clientSocket作爲參數傳遞給其他類(構造函數參數或者只是一個setter方法)。 – longhua 2013-03-15 18:17:26

回答

2

您可以使用System.setOut()System.setErr()到STDOUT和STDERR重定向到任意的輸出流(在你的情況下,網絡I/O流)。

+0

這是我在想的那種解決方法,謝謝 – njl 2013-03-15 19:33:10

相關問題