學習Java以來第一篇隨筆,寫一寫初學Socket編程中容易碰到的一個問題。照著教材上的例子敲了下麵這段單線程網路通信的代碼: 這段代碼應該是初學Socket編程都要敲的一段,邏輯還是比較簡單的。但是一開始我的TCPServer類和TCPClient類運行後,在控制台無法列印出兩者通過流交互的信息, ...
學習Java以來第一篇隨筆,寫一寫初學Socket編程中容易碰到的一個問題。照著教材上的例子敲了下麵這段單線程網路通信的代碼:
這段代碼應該是初學Socket編程都要敲的一段,邏輯還是比較簡單的。但是一開始我的TCPServer類和TCPClient類運行後,在控制台無法列印出兩者通過流交互的信息,在這裡卡了很久,在網上查找了一下原因,基本確定了應該是輸入流或者輸出流阻塞了。但是試了很久還是沒有解決問題。後來偶然發現了BufferedReader類的實例方法readLine()是在讀到換行符才返回的,這才發現了阻塞原因,原來是我的客戶端和伺服器寫入輸出流的信息根本就沒有換行。這樣readLine()始終沒有真正的返回,所以兩端沒有在輸出流中寫入內容,控制台自然列印不出內容。
這個問題其實挺低級的,不過也保不齊初學者不會犯。這裡註意簡單記錄一下,提醒自己一定要 註意細節。