Socket使用BufferedReader和BufferedWriter讀不到數據的問題

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

在writer.flush()後也讀不到數據?


準確的說不是因爲flush方法的問題,而是因爲服務器端接受數據時使用的readLine()方法必須要接收到一個換行符才能讀取一行,

而客戶端Writer.println()方法最後正好會發送換行符所以服務器端才能接收到。如果換成了Writer.print()方法,服務器端也接收不到。同理,如果使用BufferedWriter和PrintWriter的write()方法也是不能使服務器端接收到數據,但是隻要在執行了這些方法之後,
再發送一個換行符,如write("\n"),服務器端就能接收到了。當然,flush()也是必須要執行的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章