在使用 PrintWriter 時出現的問題
原因: 因爲PrintWriter.print()比PrintWriter.println()少了換行符,客戶端永遠收不到一行結束的標誌。
直到服務器退出時客戶端纔可以看見返回的消息
在使用 BufferedWriter 時也會出現同樣的問題
當使用write()方法時爲了避免上述問題可以這樣使用:
還有一種可能是在關閉流的時候把socket也關閉了。
例如,當這個socket既有讀又有寫(socket.getInputStream() , socket.getOutputStream())的時候,
當讀完了數據,以後也不再用了這個流了,根據流的使用原則,此時流應該關閉,但是在socket中,我嘗試了很多次,
當關閉任何一個與socket有關的流時,再去判斷socket,卻發現此時socket已經關閉。程序會報異常。
有可能是我的程序有問題,但是根據以上思路,我嘗試了另一種解決方法:
方法原理很簡單,就是在流之間傳遞數據的時候,在最後面加上一個標誌字符串,譬如“end”並且單獨成行,
那麼在讀取流數據的時候,就可以判斷是否讀到最後了,如果讀到最後,則使用 break退出循環,而流不再顯示關閉。
這樣就不會出現阻塞現象,程序可以很好的跑起來