我也碰到这个问题,有人能解释一下java(不通过write方式)怎么判断连接中断的吗?楼主能否贴一下用bufferredreader方式检测的代码??

解决方案 »

  1.   

    我通常是将read封装到一个方法中,需要取串的时候调用这个方法。
    无限循环一直读到不是null就返回一个串值,形如:private String read() {
      String tempString = null;
      try {
        while((tempString = /*string from some stream*/) == null) {
          ;
        }
      } catch (SomeException e) {
        /* Report Exception */
      }
      return tempString;
    }这样因为是无限循环不断判断连接状态,所以只要一断开立刻就能知道
    当然,开销比较大一点,不过应该可以接受的
      

  2.   

    Socket clientSocket = new Socket(host,port);
    InputStream is = clientSocket.getInputStream();
    byte[] buf = new byte[len];
    ......//这里做循环守候,省略
    is.read(buf);将上面的这断程序在用try捕捉错误信息,当server端主动断开链接的时候会抛出异常吗??为什么我的不会抛出异常呢??在网上看到有人说只能用write来写捕捉异常来实现判断,究竟怎么样才是切实可行的,下午的时候碰到一个奇怪的问题,就是server端断开后我write一个buffer竟然还可以发送并且没有抛出异常,一定要等到write第二个buffer的时候才抛出异常broken pipe的异常,究竟怎么回事,我快疯了,哪位能救救我!!!