0

我在聊天应用程序的服务器中使用以下代码,其中我为每个客户端使用单独的线程。 代码:

public void run()
{
String msg;
InputStreamReader isReader = new InputStreamReader(sock.getInputStream())
BufferReader r= new BufferedReader(isReader);
int i=0,j=0;
System.out.print("entered run again"+i++);
try{
             while((msg=r.readLine())!=null)
    {
        System.out.println("readed"+msg );

            spreadMsg(msg);

    }


    }catch(Exception e){e.printStackTrace();}


 }


}   

为什么 while 循环 "while((msg=r.readLine())!=null)"表现为无限循环,为什么它在读取我输入的唯一行后没有返回。

4

2 回答 2

0

在客户端关闭套接字之前,返回的流Socket.getInputStream()不会返回 null。

于 2012-12-19T14:31:49.070 回答
0

为什么 while 循环 "while((msg=r.readLine())!=null)" 表现为无限循环,为什么它在读取我输入的唯一行后没有返回。

另一端没有关闭连接,所以读者不知道你只会发送一行。

如果您想假设只发送一行,您可以自己关闭连接而不是循环。

于 2012-12-19T14:42:31.290 回答