我最近在一个socket项目上。当我调试我的代码时,我发现了一个问题,但我找不到原因,下面是我的代码
// 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循环中。如果循环结束并转到下一行然后断开连接?任何人都可以解释为什么while循环只执行一次而没有进入下一行?
最佳
答案 0 :(得分:1)
如果input= (String)in.readLine();
位于do-while循环中,当您在null
中读取时,它将打印null
然后退出循环。然后,out.close();
,in.close();
和Socket.close();
将会执行。