-3

我最近在一个套接字项目上。当我调试我的代码时,我发现了一个问题,但我找不到原因,下面是我的代码

 // some code that open a socket connection and put inputstream into a BufferedReader called 'in'

 String input;
 input= (String)in.readLine();
do{

    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

如您所见,上面的代码创建了一个无限循环,当我从服务器端发送一个字符串时,它会保留 println 该字符串。

如果我像下面那样做

 String input;

do{
    input= (String)in.readLine();
    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

问题解决了,效果很好。每次我从服务器站点发送一个字符串时,它只打印一次。但它没有退出循环并转到下一行来关闭套接字连接。

所以这是我的问题。如果我把它放在 do while 循环中。应该循环结束并转到下一行然后断开连接吗?谁能解释为什么 do while 循环只执行一次而没有转到下一行?

最好的

4

1 回答 1

1

如果input= (String)in.readLine();在do-while循环中,当你读入时null,它会打印null然后退出循环。然后,out.close();in.close();, 和Socket.close();将执行。

于 2013-05-21T21:58:41.193 回答