2012-05-19 139 views
1

對於我來說問題沒有得到執行while循環後?那有什麼問題? (while循環永遠不會執行結束後的行)爲什麼循環後的語句沒有被執行?

client = serverSocket.accept(); 
BufferedReader in = new BufferedReader(
          new InputStreamReader(client.getInputStream()) 
); 

while ((line = in.readLine()) != null) { 
    Log.i("line",line); 
    line111 +=line; 
    Log.i("line111",line111); 
} 

//Any code below this is not executed 
Log.i("shan","Shan"); 
+1

要麼你扔,要麼循環永遠不會結束。 –

+0

循環結束,因爲我得到的前3行輸出......所以包括執行while循環後50次會做任何好處?你可能會有 – Shan

+2

; while循環導致問題 –

回答

6

您的while循環卡住,等待下一行的套接字。流的源頭需要在其末尾關閉連接。

+0

終於有個好的答案!+1 –

3

此代碼「而((行= in.readLine())!= NULL)」 纔有意義,當你從文件中讀取有一個恆定的大小,最後你會達到它。 從套接字讀取時,您正在進入阻塞狀態(等待遠程客戶端發送數據)。

如果您想退出循環,則需要在備註讀取方法上添加可能的超時值。

+1

從套接字讀取時也是相關的。你只需要明白,只有當套接字的另一端關閉時,循環纔會結束。 –

+0

可能會出現遠程客戶端關閉且您沒有立即收到事件的情況。我知道c#中的情況,可以長時間保持阻塞狀態。 – Horonchik

+0

我不想關閉我的端上的套接字。如何找到數據傳輸已完成? – Shan

相關問題