用TSocketConnection做三层。
能不能判断得到当前的活动连接用户数。
水平有限,请大家耐心指教啊....最近帮朋友改一段代码,大概需求是这样的。
当有客户端通过TSocketConnection连接产生的时候 把标志变量+1
但是有时候客户端会非法断开,比如:网络断掉,或者死机
那个时候SocketConnection无法得知客户端已经断掉了,标志变量没有-1
导致程序老出问题请问有什么方法可以得到SocketConnection的正常连接用户数或者通过其他方法处理我的需求啊!

解决方案 »

  1.   

    >>能不能判断得到当前的活动连接用户数。
    是否有个参数 ActiveConnections 之类可查?简单的方法,就是轮询了,或者每台client定期发送确认的信息
      

  2.   

    复杂点的,可以用回调,client连接的时候,登记一个回调函数,server统计的时候,依次回调检查client是否还在激活状态
      

  3.   

    增加KeepAlive心跳设置,可以根据网络状况的良好程度适当稍稍缩短其心跳周期,从而可以比较快地得到响应.但是异常断开的检测确实是需要一定时间的.并且这个时间也不能随便缩短,否则操作系统可能对资源的管理就会乱套.
      

  4.   

    >>增加KeepAlive心跳设置,可以根据网络状况的良好程度适当稍稍缩短其心跳周期,从而可以比较快地得到响应.但是异常断开的检测确实是需要一定时间的.并且>>这个时间也不能随便缩短,否则操作系统可能对资源的管理就会乱套.
    =============
    好深奥哦!完全不懂呢!
      

  5.   

    我用过TCPServer控件,当有用户连接时,创建一个进程,用户断开自动释放对应进程。这些都是直接在控件的事件里完成,不知道你那个控件跟这个是不是类似
      

  6.   

    很多年没有提问了,没在软件开发这行很多年了,转行干销售了。
    通过aiirii 的提点,通过回调函数解决了,其实我的问题提的不是很对。
    当时只是简单看了代码,听朋友讲了下要求。
    后来回去仔细看了下,发现应该的需求是:
    客户端通过TSocketConnection连接,在中间层需要能够知道目前有多少活动的客户端连接。
    如果客户端非正常的挂了(死机或者断网),中间层要能立刻知道。后来回去后根据aiirii 的回复,再搜了一些资料基本实现了这个需求,也算可以对朋友交差了要不然他们都不相信我会写程序。哈哈谢谢aiirii 
    谢谢楼上帮助我的各位
    谢谢CSND
    谢谢中国互联网等回头我吧Demo写好再来结贴!