2012-05-19 95 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

相关问题