在 不考虑网络延时造成的不能判断是否断开 的情况下
怎么实时的知道Sokcet时候还连接着? 
一旦客户端异常断开 或者正常断开
马上执行一个方法能不能不用脉搏包 不PING?
客户端一断 服务器马上知道我现在做这个东西 不知道问题出在哪
只要客户端和服务端通信过 服务端便不能判断异常断开了

解决方案 »

  1.   

    断开,在什么时候才知道是断开的呢?
    只有在进行IO操作的时候。
    比如
    客户端发来请求,要求服务器做需要1分钟才能完成的任务,然后返回处理结果
    在服务器干活的这段时间,客户端在等待服务器返回,而服务器呢?正忙着干活呢!
    此时,如果客户端断开了链接,而服务器端正忙着,所以根本不会处理这个问题。
    1分钟后,服务器端终于干完活了,想返回结果,此时才发现,对方已经断开了,然后抛出了异常。所以,如果没有ping之类的心跳功能,我们是不可能更快的发现连接断开的。原帖:http://www.java2000.net/p18404
      

  2.   

    我的思路呢是做个线程,连接时不停的想服务器发在线信息,用hashmap存储信息,掉了之后也就是没有发在线信息时,就从hashmap里remove
      

  3.   

    忘说了,如果有异常就remvoe信息,掉线处理是在异常中处理