http://expert.csdn.net/Expert/topic/974/974709.xml?temp=.5557367

解决方案 »

  1.   

    用一个时间来判断,当server端的线程等待超过这个时间就关闭此socket,让客户端重新再来请求。
      

  2.   


    Socket clientSocket = listener.accept();InputStream is = clientSocket.getInputStream();byte buf[] = new byte[1024];int size = is.read(buf);//当客户端没有发来数据时,会在这里阻塞;if (size >= 0)//接收到客户端发来的数据
    {
     //处理...
    }
    else// size < 0, 说明客户端连接已经断开
    {}
      

  3.   

    socket断开有两种判断方式:
    1.在socket断开的时候,你的所有socket 操作都会返回socket错误。
    2.你自己认为的断开,你设置socket的超时时长,你的读写操作在指定时间内没有完成,就会返回错误,你可以认为对方断开了。