2014-06-08 55 views
0

我下面這個教程(dateserver)關於Socket編程在Java中:的PrintWriter和OutputStream一個簡單的客戶端服務器套接字程序

http://cs.lmu.edu/~ray/notes/javanetexamples/

這是我不明白的代碼段:

try { 
     PrintWriter out = 
     new PrintWriter(socket.getOutputStream(), true); 
     out.println(new Date().toString()); 
       } 

什麼是PrintWriter在這裏做什麼?爲什麼我們需要將參數設置爲「true」?我想首先我們啓用輸出流的插座(通過使其true),然後與out.println我們發送日期作爲outputstream,我的假設是嗎?

回答

1

從Javadocs中,PrintWriter類將對象的格式化表示打印到文本輸出流中。在這種情況下,它將日期打印到連接到套接字的輸出流。

true在構造函數意味着後續調用out.println(new Date().toString())將自動刷新輸出流的緩衝區,這意味着它將強制將該字符串寫入流,而不是將該字符串存儲在臨時緩衝區中。

2

什麼PrintWriter在這裏做什麼?爲什麼我們需要將參數設置爲「true」?我想首先我們啓用輸出流的套接字(通過使其爲真),然後與out.println我們發送日期作爲outputstream,我的假設是正確的嗎?

你的假設是錯誤的。在下面閱讀更多。

new PrintWriter(socket.getOutputStream(), true); 

什麼的PrintWriter狀態的JavaDoc:

創建從現有OutputStreamPrintWriter。這個便捷的構造函數創建必要的中間OutputStreamWriter,它將使用默認字符編碼將字符轉換爲字節。

  1. PrintWriter這裏流被連接到客戶機/服務器的輸出流中它是指由印刷作家寫入任何數據將發送到客戶機/服務器。

  2. 這裏true裝置自動沖洗從輸出緩衝器中的數據一旦新線方法被稱爲諸如println()printf(),或format()或任何換行符(「\ n」)在字符串中發現。在這種情況下,您不需要手動撥打flush()方法。