while (true){
String str2=serverin.readLine();
         System.out.println(str2);
}条件一直为true,当然不会停止了,直到发生超时这个异常才跳出这个循环

解决方案 »

  1.   

    while (true)
    {
      String str2=serverin.readLine();
      System.out.println(str2);
    }改为:
    while (true)
    {
      String str2=serverin.readLine();
      System.out.println(str2);
      if(str2.equalsIgnoreCase("end"))
        break;
    }
      

  2.   

    同意,问题是你在while(true) 中如何为出口。
    还有你的server端什么时候结束也要给个标志符,不然的话你的client socket 会一直在监听的。
      

  3.   

    一个很简单的方法,就是把你要调用的线程设置成Daemon线程(精灵线程)它不依赖于其他线程,如果主线程结束,那么它会自己结束,不用你写代码让它结束,一般它用来维护其他线程的,但自己不用其他线程来维护。只要在你调run方法前setDaemon(true)就可以了,你试一试。