服务器和客户端用tcp长连接,服务器如何能及时的检测到客户端掉线,我用了心跳机制,是隔1分钟发一次心跳,但是这样也需要一分钟才知道客户端掉线,有没有更好的办法,客户端一掉线就通知服务器。

解决方案 »

  1.   

    如果缩短时间,结果可能会导致客户端经常断线重连,因为客户端的socket还要回复其他的信息,客户端socket处理不过来
      

  2.   

    tcp/ip 线程机制
    每个连接进来的 的socketclient 都启个线程 执行
    try
    {
        堵塞式
    }
    catch
    {
        break;//你懂的
    }
      

  3.   

    ... ...求详细解决方案,客户端程序如何触发此事件... ..特别是client为浏览器的情况下.
      

  4.   

    1.心跳间隔时间需要与超时时间进行配合,单纯减少心跳时间可能会有问题。
    2.try 起来必不可少,注意的是检测的socketException错误代码为10004
    3.服务器accept产生的client的socket接收数据长度为0也代表出问题了
    推荐读一下supersocket的开源源代码