服务器端接收到客户端的Socket连接,创建了一个Socket的实例,但是,客户主动关闭了Socket以后,服务器端怎样才能判断得到呢?isClosed()方法好像不行。

解决方案 »

  1.   

    try {} 
    catch (IOException e) {}
      

  2.   

    又看了一下问题,根据你说的不用判断只有异常关闭的时候才用判断,你的客户Socket主动关闭,根本不用判断。
      

  3.   

    除了用异常判断,还有别的方法吗?
    to  gemouzhi:  isClosed()、isConnected()都不能判断得到。
    我的用意是想,当检测到客户端主动关闭Socket时,我就把服务器端的Socket清除掉。
      

  4.   

    这是起码的设计期你要做的事情吧,当然是客户端准备主动关闭Socket,先向server发一条“我要关闭”的消息,我还以为你检测异常关闭呢!
      

  5.   

    原来如此
    这个isConnected()你试了吗?
      

  6.   

    判断输入流的read(bytebuff)如果返回-1,表示对方关闭了套接字
      

  7.   

    如果客户端是正常关闭了,但由于应用的限制,不能够通过发包和接包来引起异常的话,就不能够用异常机制来处理了。不知到还有什么方法呢?现在只能够设置一个时延,超过这个时延都收不到客户端发来的包的话,就把socket关闭。
      

  8.   

    上面也有人说了 可以用read()
    也可以用readline() 返回null就是socket关闭