簡體   English   中英

一個簡單的客戶端服務器套接字程序的PrintWriter和OutputStream

[英]PrintWriter and OutputStream for a simple client server socket program

我一直在關注有關Java套接字編程的本教程(dateserver):

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

這是我不明白的代碼:

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

PrintWriter在這里做什么? 為什么我們需要將參數設置為“ true”? 我想首先我們為套接字啟用outputstream(通過使其為true ),然后使用out.println將日期作為outputstream發送,我的假設對嗎?

PrintWriter在這里做什么? 為什么我們需要將參數設置為“ true”? 我想首先我們為套接字啟用輸出流(通過使其為真),然后使用out.println將日期作為輸出流發送,我的假設對嗎?

您的假設是錯誤的。 在下面閱讀有關它的更多信息。

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

PrintWriter的 JavaDoc指出:

從現有的OutputStream創建一個新的PrintWriter 這個便利的構造函數創建必要的中間OutputStreamWriter ,它將使用默認字符編碼將字符轉換為字節。

  1. 在這里, PrintWriter流連接到客戶端/服務器的輸出流,這意味着由Print writer寫入的任何數據都將發送到客戶端/服務器。

  2. 這里的true表示一旦調用了新的行方法(例如println()printf()format()或在字符串中找到任何換行符('\\ n'),就會自動從輸出緩沖區中刷新數據。 在這種情況下,您無需手動調用flush()方法。

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

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

創建PrintWriter對象以寫入OutputStream對象,true用於刷新流,請在以下API中檢查構造函數: http : //docs.oracle.com/javase/7/docs/api/java/io/ PrintWriter.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM