比如通过readLine()读文件时,文件结束才返回空
这里因为一有连接,你就一直监听这个端口,
所以你可以通过传递一个特殊符号来结束。比如,通过写一个quit结束:     while((line = in.readLine()) != null)//就是这个循环
    {
     System.out.println("i "+i);
     System.out.println(line.length());
     if(line.equals("quit"))
         break;
    }

解决方案 »

  1.   

    因为你在ServerSocket的输入流中使用了!而ServerSocket不停的等待客户端数据的输入,也就是说他的输入在服务没有关闭之前一直处于等待状态,自然是死循环了!
      

  2.   

    同一楼上的
    readLine 
    Returns:
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
      

  3.   

    不会返回null在你这里
    就算是用户什么都不打直接回车
      

  4.   

    那什么情况下,readLine()方法可以返回null呢?
      

  5.   

    读到一个文件的末尾的时候
    文件结束了,就··null了
      

  6.   

    只有读到数据流最末尾,才返回null在网络上,一直等待输入,即使是对方什么也不输入,只是回车,readline也不会返回null如果I/O中断,会返回I/O异常,还是不会返回null除非你使用的数据流有固定长度(比如文件数据流,或者ByteArrayInputStream之类),而不是网络数据流(阻塞模式)。在I/O阻塞模式下,你写的条件循环,是不合理的:
          while((line = in.readLine()) != null)
    应该如下:
          while(网络状态)//状态可由从客户端读入数据时捕捉I/O异常来获取留下你的邮箱,我发给你我写的服务器例子(有点长,在这里发不方便)。另:
        如果要编写多用户服务程序,最好使用java.nio
      

  7.   

    谢谢! 我的email: [email protected]