socket通信时 在服务器端定义一个 
BufferedReader read = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
利用  read.readline() 这个阻塞方法来得到从客户端哪里发来的消息,
此时该如何克服当客户端的socket关闭时或其他情况导致客户端关闭造成的服务器端报异常的问题。  

解决方案 »

  1.   

     read.readline() 不要用这个
    用read(Byte[] byte)
    或者read(char[] char)
    直接完全读取到字符数组中
      

  2.   

    不妨根据得到的字符串进行判断试试:while(true)
    {
      ……
      string str=read.readLine();
    if(str != null)
    {
      ……
    }
    else
    {
      continue;
    }
    }
      

  3.   

    把你的read.readline() 放到一个线程里处理,不要放到ServerSocket的线程处理。
      

  4.   

    用readUTF()方法读取数据,同时捕获EOFException,若发生EOFException即说客户端已退出或关闭!
      

  5.   

    谢谢楼上各位的回答 我突然发现一个问题 有异常抛出是好事 我把异常用 finally处理一下就行了 我只想到如何去避免抛出异常却没想过去处理这个异常 还纠结了这么多时间 太笨了 结贴每人都给感谢分