昨天提问了,问题没有表达清楚,后来发现自己不能编辑自己的提问。
需求是这样的:
Delphi7,客户端用TSocketConnection链接,需要在中间层能够得到活动连接数
因为想在中间层做加密站点数控制,以达到限定用户登陆的目的。
程序有互联网应用(通过花生壳或者固定IP)的要求
之前aiirii给了一个通过callback的方式。试验了一下,在局域网基本可以
但是通过回调依然不能很好的解决网络突然中断或者突然断电的情况。
基本要求是:有一个活动连接算一个站点,如果客户端死机或者断网或者其他非正常原因突然当掉了
服务端要能够立刻知道并且及时刷新“当前用户数”,以方便客户端再次登陆。
希望有做过类似应用的同行先进不吝赐教!
感激不尽!!!!!

解决方案 »

  1.   

    >>服务端要能够立刻知道并且及时刷新“当前用户数”,以方便客户端再次登陆。 
    三层的,一般用超时,像这种立即知道的,似乎难度大,意义小
    >>因为想在中间层做加密站点数控制,以达到限定用户登陆的目的
    一些usb加密狗,以及有类似的功能,可以参考下,或联系厂家给demo
    可以仿效ie cookie的机制,用户新连接过来,可以分配个唯一序列号,那下次通讯,必须提交该号来做判别
    可以一直保存该号(到文件,或者只是内存)
    如果重新启动,则根据规则重新生成,或者读取原来保存到文件的号
      

  2.   

    采用了一个比较笨的办法,在中间层维护一个列表。记录登陆用户和登录时间
    客户端用timer每隔5秒丢一个时间包到中间层,中间层收到后就去更新维护的列表
    中间层每隔20秒刷新一下列表,发现超时的,就删掉。目前在自己的环境中测试通过、